Line data Source code
1 : #ifndef ALITOFSDIGITIZER_H
2 : #define ALITOFSDIGITIZER_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 : //__________________________________________//
8 : // //
9 : // Class for making SDigits in TOF //
10 : // //
11 : //-- Authors: F. Pierella, A. De Caro //
12 : // //
13 : //__________________________________________//
14 :
15 : /* $Id$ */
16 :
17 : #include "TNamed.h"
18 :
19 : class TF1;
20 : class TString;
21 :
22 : class AliLoader;
23 : class AliRunLoader;
24 :
25 : class AliTOFcalib;
26 :
27 : class AliTOFSDigitizer: public TNamed {
28 :
29 : public:
30 : AliTOFSDigitizer() ; // ctor
31 : //AliTOFSDigitizer(const char* HeaderFile) ; // par ctor
32 : AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1=-1, Int_t nEvents=0) ; // par ctor
33 :
34 : AliTOFSDigitizer(const AliTOFSDigitizer &source); // copy constructor
35 : AliTOFSDigitizer& operator=(const AliTOFSDigitizer &/*source*/); // ass. op.
36 :
37 : virtual ~AliTOFSDigitizer() ; // dtor
38 :
39 : //static Float_t WidthTdcBin() {return fgkTdcBin;};
40 :
41 : virtual void Digitize(Option_t *verboseOption);
42 0 : void SetSDigitsFile(char * /*file*/ ) const {;}
43 :
44 : void InitParameters();
45 : virtual void PrintParameters() const ;
46 : virtual void SimulateDetectorResponse(Float_t z0, Float_t x0, Float_t geantTime, Int_t& nActivatedPads, Int_t& nFiredPads, Bool_t* isFired, Int_t* nPlace, Float_t* qInduced, Float_t* tofTime, Float_t& averageTime);
47 : virtual void SimulateDetectorResponseOLD(Float_t z0, Float_t x0, Float_t geantTime, Int_t& nActivatedPads, Int_t& nFiredPads, Bool_t* isFired, Int_t* nPlace, Float_t* qInduced, Float_t* tofTime, Float_t& averageTime);
48 : virtual void Print(Option_t* opt) const ;
49 0 : void SetFirstEvent(Int_t event1) {fEvent1 = event1;}
50 0 : void SetSecondEvent(Int_t event2) {fEvent2 = event2;}
51 0 : Int_t GetFirstEvent() const {return fEvent1;}
52 0 : Int_t GetSecondEvent() const {return fEvent2;}
53 0 : Int_t GetNEvents() const {return (fEvent2-fEvent1);}
54 : void SelectSectorAndPlate(Int_t sector, Int_t plate);
55 :
56 : // setters and getters for detector simulation
57 : // it summarizes all it is known about TOF strip
58 0 : void SetPadefficiency(Float_t padefficiency) {fpadefficiency=padefficiency;}
59 0 : void SetEdgeEffect(Int_t edgeEffect) {fEdgeEffect=edgeEffect;}
60 0 : void SetEdgeTails(Int_t edgeTails) {fEdgeTails=edgeTails;}
61 0 : void SetHparameter(Float_t hparameter) {fHparameter=hparameter;}
62 0 : void SetH2parameter(Float_t h2parameter) {fH2parameter=h2parameter;}
63 0 : void SetKparameter(Float_t kparameter) {fKparameter=kparameter;}
64 0 : void SetK2parameter(Float_t k2parameter) {fK2parameter=k2parameter;}
65 0 : void SetEffCenter(Float_t effCenter) {fEffCenter=effCenter;}
66 0 : void SetEffBoundary(Float_t effBoundary) {fEffBoundary=effBoundary;}
67 0 : void SetEff2Boundary(Float_t eff2Boundary) {fEff2Boundary=eff2Boundary;}
68 0 : void SetEff3Boundary(Float_t eff3Boundary) {fEff3Boundary=eff3Boundary;}
69 0 : void SetAddTRes(Float_t addTRes) {fAddTRes=addTRes;}
70 0 : void SetResCenter (Float_t resCenter) {fResCenter=resCenter;}
71 0 : void SetResBoundary(Float_t resBoundary) {fResBoundary=resBoundary;}
72 0 : void SetResSlope(Float_t resSlope) {fResSlope=resSlope;}
73 0 : void SetTimeWalkCenter(Float_t timeWalkCenter) {fTimeWalkCenter=timeWalkCenter;}
74 0 : void SetTimeWalkBoundary(Float_t timeWalkBoundary){fTimeWalkBoundary=timeWalkBoundary;}
75 0 : void SetTimeWalkSlope(Float_t timeWalkSlope) {fTimeWalkSlope=timeWalkSlope;}
76 :
77 0 : void SetTimeDelayFlag(Int_t timeDelayFlag) {fTimeDelayFlag=timeDelayFlag;}
78 0 : void SetPulseHeightSlope(Float_t pulseHeightSlope){fPulseHeightSlope=pulseHeightSlope;}
79 0 : void SetTimeDelaySlope(Float_t timeDelaySlope) {fTimeDelaySlope=timeDelaySlope;}
80 0 : void SetMinimumCharge(Float_t minimumCharge) {fMinimumCharge=minimumCharge;}
81 0 : void SetChargeSmearing(Float_t chargeSmearing) {fChargeSmearing=chargeSmearing;}
82 0 : void SetLogChargeSmearing(Float_t logChargeSmearing){fLogChargeSmearing=logChargeSmearing;}
83 0 : void SetTimeSmearing(Float_t timeSmearing) {fTimeSmearing=timeSmearing;}
84 0 : void SetAverageTimeFlag(Int_t averageTimeFlag) {fAverageTimeFlag=averageTimeFlag;}
85 :
86 0 : void SetAdcBin(Float_t adcBin) {fAdcBin=adcBin;}
87 0 : void SetAdcMean(Float_t adcMean) {fAdcMean=adcMean;}
88 0 : void SetAdcRms(Float_t adcRms) {fAdcRms=adcRms;}
89 :
90 0 : void SetTimeResolution(Float_t time) {fTimeResolution=time;}
91 :
92 0 : Float_t GetPadefficiency() const {return fpadefficiency;}
93 0 : Int_t GetEdgeEffect() const {return fEdgeEffect;}
94 0 : Int_t GetEdgeTails() const {return fEdgeTails;}
95 0 : Float_t GetHparameter() const {return fHparameter;}
96 0 : Float_t GetH2parameter() const {return fH2parameter;}
97 0 : Float_t GetKparameter() const {return fKparameter;}
98 0 : Float_t GetK2parameter() const {return fK2parameter;}
99 0 : Float_t GetEffCenter() const {return fEffCenter;}
100 0 : Float_t GetEffBoundary() const {return fEffBoundary;}
101 0 : Float_t GetEff2Boundary() const {return fEff2Boundary;}
102 0 : Float_t GetEff3Boundary() const {return fEff3Boundary;}
103 0 : Float_t GetAddTRes () const {return fAddTRes;}
104 0 : Float_t GetResCenter () const {return fResCenter;}
105 0 : Float_t GetResBoundary() const {return fResBoundary;}
106 0 : Float_t GetResSlope() const {return fResSlope;}
107 0 : Float_t GetTimeWalkCenter() const {return fTimeWalkCenter;}
108 0 : Float_t GetTimeWalkBoundary() const {return fTimeWalkBoundary;}
109 0 : Float_t GetTimeWalkSlope() const {return fTimeWalkSlope;}
110 0 : Int_t GetTimeDelayFlag() const {return fTimeDelayFlag;}
111 0 : Float_t GetPulseHeightSlope() const {return fPulseHeightSlope;}
112 0 : Float_t GetTimeDelaySlope() const {return fTimeDelaySlope;}
113 0 : Float_t GetMinimumCharge() const {return fMinimumCharge;}
114 0 : Float_t GetChargeSmearing() const {return fChargeSmearing;}
115 0 : Float_t GetLogChargeSmearing()const {return fLogChargeSmearing;}
116 0 : Float_t GetTimeSmearing() const {return fTimeSmearing;}
117 0 : Int_t GetAverageTimeFlag() const {return fAverageTimeFlag;}
118 :
119 0 : Float_t GetAdcBin() const {return fAdcBin;}
120 0 : Float_t GetAdcMean() const {return fAdcMean;}
121 0 : Float_t GetAdcRms() const {return fAdcRms;}
122 :
123 0 : Float_t GetTimeResolution() const {return fTimeResolution;}
124 :
125 :
126 : protected:
127 :
128 :
129 : private:
130 : Int_t fEvent1; // lower bound for events to sdigitize
131 : Int_t fEvent2; // upper bound for events to sdigitize
132 : TF1 *ftail; // pointer to formula for time with tail
133 : TString fHeadersFile; // input file
134 : AliRunLoader* fRunLoader; //! Run Loader
135 : AliLoader* fTOFLoader; //! Loader
136 :
137 : Int_t fSelectedSector; // sector number for sdigitization
138 : Int_t fSelectedPlate ; // plate number for sdigitization
139 :
140 : // detector response simulation
141 : // Intrisic MRPC time resolution and pad (edge effect) parameters
142 : Float_t fTimeResolution; // time resolution (ps)
143 : Float_t fpadefficiency; // intrinsic pad efficiency, used if fEdgeEffect==0
144 : Int_t fEdgeEffect; // edge effects option
145 : Int_t fEdgeTails; // edge tails option
146 : Float_t fHparameter; // sensitive edge (to produce hits on the neighbouring pads)
147 : // 0.7 cm (old); 0.4 cm (new)
148 : Float_t fH2parameter; // parameter to fit the efficiency
149 : Float_t fKparameter; // sensitive edge (going ahead towards the center
150 : // no delay effects are suffered) 1.0 cm (old); 0.5 cm (new)
151 : Float_t fK2parameter; // parameter to fit the efficiency
152 : // Pad Efficiency and Resolution parameters
153 : Float_t fEffCenter; // efficiency in the central region of the pad
154 : Float_t fEffBoundary; // efficiency at the boundary of the pad
155 : Float_t fEff2Boundary; // efficiency value at H2parameter
156 : Float_t fEff3Boundary; // efficiency value at K2parameter
157 : Float_t fAddTRes; // additional contribution to
158 : // the intrinsic MRPC time resolution (ps)
159 : Float_t fResCenter; // resolution (ps) in the central region of the pad
160 : Float_t fResBoundary; // resolution (ps) at the boundary of the pad
161 : Float_t fResSlope; // slope (ps/K) for neighbouring pad
162 : // Time Walk parameters
163 : Float_t fTimeWalkCenter; // time walk (ps) in the central region of the pad
164 : Float_t fTimeWalkBoundary;// time walk (ps) at the boundary of the pad
165 : Float_t fTimeWalkSlope; // slope (ps/K) for neighbouring pad
166 : Int_t fTimeDelayFlag; // flag for delay due to the PulseHeightEffect
167 : Float_t fPulseHeightSlope;// It determines the charge amount induced
168 : // due to edge effect, using the formula
169 : // qInduced=exp(-PulseHeightSlope*x)
170 : Float_t fTimeDelaySlope; // It determines the time delay. This is the slope
171 : // in the T1-T2 vs log(q1/q2) plot
172 : // ADC-TDC correlation parameters
173 : Float_t fMinimumCharge; // Minimum charge amount which could be induced
174 : Float_t fChargeSmearing; // Smearing in charge in (q1/q2) vs x plot
175 : Float_t fLogChargeSmearing;// Smearing in log of charge ratio
176 : Float_t fTimeSmearing; // Smearing in time in time vs log(q1/q2) plot
177 : Int_t fAverageTimeFlag; // flag (see the setter for details)
178 :
179 : Float_t fAdcBin; // charge-window for the ADC bins [pC]
180 : Float_t fAdcMean; // mean value for the ADC spectrum [bins]
181 : Float_t fAdcRms; // rms value for the ADC spectrum [bins]
182 :
183 : AliTOFcalib * fCalib; //! calibration object
184 :
185 316 : ClassDef(AliTOFSDigitizer,5) // creates TOF SDigits
186 :
187 : };
188 :
189 : #endif // AliTOFSDIGITIZER_H
|