KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVFAZIADetector.h
Go to the documentation of this file.
1 
4 #ifndef __KVFAZIADETECTOR_H
5 #define __KVFAZIADETECTOR_H
6 
7 #include "KVDetector.h"
8 class KVSignal;
9 
10 #define __KVFD_methname(X, Y) Get ## X ## Y
11 #define __KVFD_setmethname(X, Y) Set ## X ## Y
12 #define __KVFD_dotcat(X, Y) X.Y
13 #define __KVFD_str(s) #s
14 #define __KVFD_xstr(s) __KVFD_str(s)
15 #define __KVFD_dcs(X, Y) __KVFD_xstr(__KVFD_dotcat(X,Y))
16 
17 #define __KVFAZIADETECTOR_GETSIGNAL(sig,type) \
18  Double_t __KVFD_methname(sig,type)() const \
19  { \
20  return GetDetectorSignalValue(__KVFD_dcs(sig,type)); \
21  } \
22  KVDetectorSignal* __KVFD_setmethname(sig,type)(Double_t val) \
23  { \
24  KVDetectorSignal* ds = GetDetectorSignal(__KVFD_dcs(sig,type)); \
25  ds->SetValue(val); \
26  ds->SetFired(); \
27  return ds; \
28  }
29 
48 class KVFAZIADetector : public KVDetector {
49 protected:
51 
58 
63 
65 
66  void init(); //initialisation method called by the constructors
68 
69 public:
70  enum { //determine identification of the detector
74  kOTHER
75  };
77  KVFAZIADetector(const Char_t* type, const Float_t thick = 0.0);
78  virtual ~KVFAZIADetector();
79  void Copy(TObject& obj) const;
80  virtual void Clear(Option_t* opt = "");
81  virtual void SetName(const char* name);
82 
83  static const Char_t* GetNewName(KVString oldname);
84 
85  Bool_t Fired(Option_t* opt = "any") const;
86 
87  void SetSignal(TGraph* signal, const Char_t* signal_name);
88  Bool_t HasSignal() const;
89  KVSignal* GetSignal(const Char_t* name) const;
90  KVSignal* GetSignalByType(const Char_t* type) const;
91  KVSignal* GetSignal(Int_t idx) const;
92  Int_t GetNumberOfSignals() const;
93  const KVSeqCollection* GetListOfSignals() const;
94  void ComputePSA();
95 
96  KVDetectorSignal* SetFPGAEnergy(int sigid, Int_t idx /* Si: alway 0, CsI: 0=max 1=fast */, Double_t energy);
97 
99  {
105  return fIdentifier;
106  }
107 
109  {
110  return fBlock;
111  }
112  Int_t GetIndex() const
113  {
116  return fIndex;
117  }
118 
120  {
122  return fIsRutherford;
123  }
124 
126  {
127  return fQuartet;
128  }
130  {
131  return fTelescope;
132  }
133 
134  Double_t GetSetupParameter(const Char_t* parname);
135 
136  __KVFAZIADETECTOR_GETSIGNAL(I1, Amplitude)
137  __KVFAZIADETECTOR_GETSIGNAL(I1, BaseLine)
138  __KVFAZIADETECTOR_GETSIGNAL(I1, RawAmplitude)
139  __KVFAZIADETECTOR_GETSIGNAL(I1, SigmaBaseLine)
140 
141  __KVFAZIADETECTOR_GETSIGNAL(I2, Amplitude)
142  __KVFAZIADETECTOR_GETSIGNAL(I2, BaseLine)
143  __KVFAZIADETECTOR_GETSIGNAL(I2, RawAmplitude)
144  __KVFAZIADETECTOR_GETSIGNAL(I2, SigmaBaseLine)
145 
146  __KVFAZIADETECTOR_GETSIGNAL(Q2, Amplitude)
147  __KVFAZIADETECTOR_GETSIGNAL(Q2, BaseLine)
148  __KVFAZIADETECTOR_GETSIGNAL(Q2, FPGAEnergy)
149  __KVFAZIADETECTOR_GETSIGNAL(Q2, RawAmplitude)
150  __KVFAZIADETECTOR_GETSIGNAL(Q2, RiseTime)
151  __KVFAZIADETECTOR_GETSIGNAL(Q2, SigmaBaseLine)
152 
153  __KVFAZIADETECTOR_GETSIGNAL(Q3, Amplitude)
154  __KVFAZIADETECTOR_GETSIGNAL(Q3, BaseLine)
155  __KVFAZIADETECTOR_GETSIGNAL(Q3, FastAmplitude)
156  __KVFAZIADETECTOR_GETSIGNAL(Q3, FastFPGAEnergy)
157  __KVFAZIADETECTOR_GETSIGNAL(Q3, FPGAEnergy)
158  __KVFAZIADETECTOR_GETSIGNAL(Q3, RawAmplitude)
159  __KVFAZIADETECTOR_GETSIGNAL(Q3, RiseTime)
160  __KVFAZIADETECTOR_GETSIGNAL(Q3, SigmaBaseLine)
161  __KVFAZIADETECTOR_GETSIGNAL(Q3, SlowAmplitude)
162 
163  __KVFAZIADETECTOR_GETSIGNAL(QH1, Amplitude)
164  __KVFAZIADETECTOR_GETSIGNAL(QH1, BaseLine)
165  __KVFAZIADETECTOR_GETSIGNAL(QH1, FPGAEnergy)
166  __KVFAZIADETECTOR_GETSIGNAL(QH1, RawAmplitude)
167  __KVFAZIADETECTOR_GETSIGNAL(QH1, RiseTime)
168  __KVFAZIADETECTOR_GETSIGNAL(QH1, SigmaBaseLine)
169 
170  __KVFAZIADETECTOR_GETSIGNAL(QL1, Amplitude)
171  __KVFAZIADETECTOR_GETSIGNAL(QL1, BaseLine)
172  __KVFAZIADETECTOR_GETSIGNAL(QL1, RawAmplitude)
173  __KVFAZIADETECTOR_GETSIGNAL(QL1, RiseTime)
174  __KVFAZIADETECTOR_GETSIGNAL(QL1, SigmaBaseLine)
175 
176  Int_t GetDetTag() const
177  {
178  return GetDetectorSignalValue("DetTag");
179  }
180  Int_t GetGTTag() const
181  {
182  return GetDetectorSignalValue("GTTag");
183  }
184  void SetDetTag(Int_t t)
185  {
186  SetDetectorSignalValue("DetTag", t);
187  }
188  void SetGTTag(Int_t t)
189  {
190  SetDetectorSignalValue("GTTag", t);
191  }
192 
193  ClassDef(KVFAZIADetector, 1) //Base class for FAZIA detector
194 };
195 
196 #endif
int Int_t
#define __KVFAZIADETECTOR_GETSIGNAL(sig, type)
static Double_t energy[]
char Char_t
bool Bool_t
double Double_t
float Float_t
const char Option_t
#define ClassDef(name, id)
Base class for output signal data produced by a detector.
Base class for detector geometry description.
Definition: KVDetector.h:159
void SetDetectorSignalValue(const KVString &type, Double_t val) const
Definition: KVDetector.h:505
Double_t GetDetectorSignalValue(const KVString &type, const KVNameValueList &params="") const
Definition: KVDetector.h:492
Base class for FAZIA detectors.
Bool_t fIsFiredFromSignals
KVSignal * GetSignal(const Char_t *name) const
Bool_t Fired(Option_t *opt="any") const
const KVSeqCollection * GetListOfSignals() const
virtual void Clear(Option_t *opt="")
If opt="N" we do not reset any raw data, signals, etc.
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 SetSignal(TGraph *signal, const Char_t *signal_name)
KVFAZIADetector()
Default constructor.
Int_t GetIdentifier() const
Int_t GetBlockNumber() const
virtual void SetName(const char *name)
Double_t fQ3Threshold
Bool_t HasSignal() const
Returns kTRUE if detector has at least 1 associated signal.
Int_t GetDetTag() const
void Copy(TObject &obj) const
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
Access detector signal of given type: "I1", "I2", "Q2", "Q3", "QH1", "QL1".
Double_t GetSetupParameter(const Char_t *parname)
Int_t GetGTTag() const
Double_t fQ2Threshold
Int_t GetNumberOfSignals() const
Int_t GetIndex() const
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 init()
default initialisations
KVDetectorSignal * SetFPGAEnergy(int sigid, Int_t idx, Double_t energy)
Int_t fIndex
100*block+10*quartet+telescope
KaliVeda extensions to ROOT collection classes.
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:72
Optimised list in which named objects can only be placed once.