KaliVeda
Toolkit for HIC analysis
KVFAZIADetector.h
1 
4 #ifndef __KVFAZIADETECTOR_H
5 #define __KVFAZIADETECTOR_H
6 
7 #include "KVDetector.h"
8 #include "KVSignal.h"
9 
29 class KVFAZIADetector : public KVDetector
30 {
31  friend class KVFAZIA;
32 
34 
41 
46 
48 
49  void init(); //initialisation method called by the constructors
51 
52  Bool_t use_signal_for_raw_data_tree(const TString&) const override;
53 
54  KVDetectorSignal* set_psa_detector_signal_value(const TString& sig_type, const TString& psa_val, double val)
55  {
56  auto ds = GetDetectorSignal(Form("%s.%s",sig_type.Data(),psa_val.Data()));
57  if(ds)
58  {
59  ds->SetValue(val);
60  ds->SetFired();
61  }
62  else
63  Warning("set_pas_detector_signal_value","%s::%s.%s signal not defined?",GetName(),sig_type.Data(),psa_val.Data());
64  return ds;
65  }
66  KVDetectorSignal* SetFPGAEnergy(int sigid, Int_t idx /* Si: alway 0, CsI: 0=max 1=fast */, Double_t energy)
67  {
70 
71  switch (sigid) {
72  case KVSignal::kQH1:
73  if (idx == 0) return set_psa_detector_signal_value("QH1","FPGAEnergy",energy);//SetQH1FPGAEnergy(energy);
74  break;
75  case KVSignal::kI1:
76  break;
77  case KVSignal::kQL1:
78  break;
79  case KVSignal::kQ2:
80  if (idx == 0) return set_psa_detector_signal_value("Q2","FPGAEnergy",energy);//SetQ2FPGAEnergy(energy);
81  break;
82  case KVSignal::kI2:
83  break;
84  case KVSignal::kQ3:
85  if (idx == 0) return set_psa_detector_signal_value("Q3","FPGAEnergy",energy);//SetQ3FPGAEnergy(energy);
86  if (idx == 1) return set_psa_detector_signal_value("Q3","FastFPGAEnergy",energy);//SetQ3FastFPGAEnergy(energy);
87  break;
88  }
89  return nullptr;
90  }
91  KVDetectorSignal* SetBaseLine(int sigid, Float_t baseline)
92  {
95 
96  switch (sigid) {
97  case KVSignal::kQH1:
98  return set_psa_detector_signal_value("QH1","BaseLine",baseline);//SetQH1BaseLine(baseline);
99  break;
100  case KVSignal::kI1:
101  break;
102  case KVSignal::kQL1:
103  break;
104  case KVSignal::kQ2:
105  return set_psa_detector_signal_value("Q2","BaseLine",baseline);//SetQ2BaseLine(baseline);
106  break;
107  case KVSignal::kI2:
108  break;
109  case KVSignal::kQ3:
110  return set_psa_detector_signal_value("Q3","BaseLine",baseline);//SetQ3BaseLine(baseline);
111  break;
112  }
113  return nullptr;
114  }
115  void SetPSAResults(const KVSignal* sig)
116  {
118 
119  KVNameValueList psa_values;
120  sig->GetPSAResults(psa_values);
121  for(auto& val : psa_values)
122  {
123  set_psa_detector_signal_value(sig->GetType(),val.GetName(),val.GetDouble());
124  }
125 
126  }
127 public:
128  enum { //determine identification of the detector
132  kOTHER
133  };
134  KVFAZIADetector();
135  KVFAZIADetector(const Char_t* type, const Float_t thick = 0.0);
136  virtual ~KVFAZIADetector();
137  void Copy(TObject& obj) const override;
138  void Clear(Option_t* opt = "") override;
139  void SetName(const char* name) override;
140 
141  static const Char_t* GetNewName(KVString oldname);
142 
143  Bool_t Fired(Option_t* opt = "any") const override;
144 
145  void SetSignal(TGraph* signal, const Char_t* signal_name);
146  Bool_t HasSignal() const;
147  KVSignal* GetSignal(const Char_t* name) const;
148  KVSignal* GetSignalByType(const Char_t* type) const;
149  KVSignal* GetSignal(Int_t idx) const;
150  Int_t GetNumberOfSignals() const;
151  const KVSeqCollection* GetListOfSignals() const;
152  void ComputePSA();
153 
155  {
161  return fIdentifier;
162  }
163 
165  {
166  return fBlock;
167  }
168  Int_t GetIndex() const override
169  {
172  return fIndex;
173  }
174 
176  {
178  return fIsRutherford;
179  }
180 
182  {
183  return fQuartet;
184  }
186  {
187  return fTelescope;
188  }
189 
190  Double_t GetSetupParameter(const Char_t* parname);
191 
192  Int_t GetDetTag() const
193  {
194  return GetDetectorSignalValue("DetTag");
195  }
196  Int_t GetGTTag() const
197  {
198  return GetDetectorSignalValue("GTTag");
199  }
200  void SetDetTag(Int_t t)
201  {
202  SetDetectorSignalValue("DetTag", t);
203  }
204  void SetGTTag(Int_t t)
205  {
206  SetDetectorSignalValue("GTTag", t);
207  }
208 
209  ClassDefOverride(KVFAZIADetector, 1) //Base class for FAZIA detector
210 };
211 
212 #endif
int Int_t
bool Bool_t
char Char_t
float Float_t
double Double_t
const char Option_t
#define ClassDefOverride(name, id)
char * Form(const char *fmt,...)
void Warning(const char *method, const char *msgfmt,...) const override
Definition: KVBase.cpp:1637
Base class for output signal data produced by a detector.
Base class for FAZIA detectors.
Bool_t fIsFiredFromSignals
KVSignal * GetSignal(const Char_t *name) const
Int_t GetIndex() const override
Bool_t Fired(Option_t *opt="any") const override
const KVSeqCollection * GetListOfSignals() const
KVDetectorSignal * set_psa_detector_signal_value(const TString &sig_type, const TString &psa_val, double val)
Double_t fQH1Threshold
thresholds defined for this detector
virtual ~KVFAZIADetector()
Destructor.
Int_t GetQuartetNumber() const
KVUniqueNameList fSignals
list of electronics signal (current, charge, etc... )
void Clear(Option_t *opt="") override
If opt="N" we do not reset any raw data, signals, etc.
void SetSignal(TGraph *signal, const Char_t *signal_name)
KVFAZIADetector()
Default constructor.
Int_t GetIdentifier() const
Int_t GetBlockNumber() const
Double_t fQ3Threshold
Bool_t HasSignal() const
Returns kTRUE if detector has at least 1 associated signal.
Int_t GetDetTag() const
void SetPSAResults(const KVSignal *sig)
KVDetectorSignal * SetFPGAEnergy(int sigid, Int_t idx, Double_t energy)
void SetName(const char *name) override
Bool_t IsRutherford() const
Int_t GetTelescopeNumber() const
void SetGTTag(Int_t t)
void SetDetTag(Int_t t)
KVSignal * GetSignalByType(const Char_t *type) const
Double_t GetSetupParameter(const Char_t *parname)
Bool_t use_signal_for_raw_data_tree(const TString &) const override
Restrict list of signals which are used to fill raw data TTrees.
Int_t GetGTTag() const
Double_t fQ2Threshold
Int_t GetNumberOfSignals() const
KVDetectorSignal * SetBaseLine(int sigid, Float_t baseline)
void ComputePSA()
Perform Pulse Shape Analysis on all signals.
Int_t fIdentifier
SI1=0(kSI1) SI2=1(kSI2) CSI=2(kCSI)
static const Char_t * GetNewName(KVString oldname)
void Copy(TObject &obj) const override
void init()
default initialisations
Int_t fIndex
100*block+10*quartet+telescope
Description of a FAZIA detector geometry.
Definition: KVFAZIA.h:33
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
KaliVeda extensions to ROOT collection classes.
const Char_t * GetType() const
Definition: KVSignal.h:98
@ kQH1
Definition: KVSignal.h:16
@ kQL1
Definition: KVSignal.h:18
virtual void GetPSAResults(KVNameValueList &) const
Definition: KVSignal.h:154
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
Optimised list in which named objects can only be placed once.
const char * GetName() const override
const char * Data() const