KaliVeda
Toolkit for HIC analysis
KVIDZAFromZGridMassHomogenizer.h
1 #pragma once
2 
3 #include "KVBase.h"
4 #include "KVIDGridManager.h"
5 #include "KVIDZAFromZGrid.h"
6 
45 {
46  KVIDGridManager theGrids;
47  TFile theData;
48 
49  using mass_dist_stat_t = std::unordered_map<std::string,std::vector<std::string>>;
50  std::map<int,mass_dist_stat_t> all_mass_ranges;
51 
52  std::unordered_map<std::string,int> theRunLists;
53  std::optional<KVNumberList> currentRunList;
54  bool has_multi_runlists() const { return theRunLists.size()>1; }
55  void correct_masses_for_grid(const TString& grid_name, int Z, int deltaA,
56  const KVNameValueList& mass_fit_parameters);
57  KVIDZAFromZGrid* GetGrid(TObject* obj)
58  {
67  auto gr = dynamic_cast<KVIDZAFromZGrid*>(obj);
68  if(gr && (!has_multi_runlists() || (currentRunList && (!gr->HasRunList() || currentRunList->SubsetOf(gr->GetRuns())))))
69  return gr;
70  if(gr && has_multi_runlists() && currentRunList && gr->GetRuns().SubsetOf(*currentRunList))
71  {
72  KVError::Warning(this,"GetGrid",
73  "Check current runlist (%s): grid %s may be included several times (this version is for runs %s)",
74  currentRunList->AsString(), gr->GetName(), gr->GetRunList());
75  }
76  return nullptr;
77  }
78  void Analyse(KVIDZAFromZGrid* grid,double min_yield);
79  void Analyse(const TString& gridname,double min_yield)
80  {
81  auto gr = GetGrid(gridname);
82  Analyse(gr,min_yield);
83  }
84 
85  public:
86  KVIDZAFromZGridMassHomogenizer(const TString& gridfile, const TString& datafile);
87 
88  void SetCurrentRunList(const TString& runs)
89  {
90  currentRunList = KVNumberList(runs);
91  }
93  {
94  return currentRunList.value_or("");
95  }
96  void Analyse(double min_yield)
97  {
101 
102  if(has_multi_runlists() && !currentRunList)
103  {
104  KVError::Error(this,"Analyse", "Grids have multiple runlists. You must choose the current runlist first:");
105  for(auto& rl : theRunLists)
106  {
107  if(rl.first!="")
108  KVError::Info(this, "Analyse",
109  " - %d grids are valid for runlist %s", rl.second, rl.first.c_str());
110  }
111  return;
112  }
113  for(auto obj : *theGrids.GetGrids())
114  {
115  Analyse(GetGrid(obj),min_yield);
116  }
117  }
118  KVIDZAFromZGrid* GetGrid(const TString& gridname)
119  {
123  return GetGrid(theGrids.GetGrid(gridname));
124  }
125  void Print() const;
126  void ShowFits(int Z, const std::string& alist);
127  void CorrectMasses(int Z, const std::string& alist, int deltaA,
128  const KVNameValueList& mass_fit_parameters);
129  void CorrectMassesForTelescope(int Z, const TString& idtel, int deltaA,
130  const KVNameValueList& mass_fit_parameters);
131  void Clear()
132  {
134  all_mass_ranges.clear();
135  }
136  void SaveGrids(const TString& filename);
137 
139 };
140 
#define ClassDefOverride(name, id)
Base class for KaliVeda framework.
Definition: KVBase.h:140
Handles a stock of identification grids to be used by one or more identification telescopes.
KVIDGraph * GetGrid(const Char_t *name) const
Return pointer to grid with name "name".
const KVSeqCollection * GetGrids() const
Check & correct if necessary that isotopic masses used in different multi-gauss fits are consistent.
KVIDZAFromZGrid * GetGrid(const TString &gridname)
void CorrectMassesForTelescope(int Z, const TString &idtel, int deltaA, const KVNameValueList &mass_fit_parameters)
void SaveGrids(const TString &filename)
Save all grids: overwrites original file if no filename given (filename=""), otherwise writes a new f...
KVIDZAFromZGridMassHomogenizer(const TString &gridfile, const TString &datafile)
void CorrectMasses(int Z, const std::string &alist, int deltaA, const KVNameValueList &mass_fit_parameters)
void ShowFits(int Z, const std::string &alist)
Hybrid charge & mass identification grid.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:86
const char * GetName() const override
TGraphErrors * gr
void Error(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:116
void Warning(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:125
void Info(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:134