Corrections in the comments (M. Chojnacki).
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDInjectors.h
CommitLineData
348f80b7 1#ifndef ALIITSONLINESDDINJECTORS_H
2#define ALIITSONLINESDDINJECTORS_H
3
4
84df0230 5/* $Id$ */
9f026db8 6
348f80b7 7///////////////////////////////////////////////////////////////////
8// //
9// Class used for SDD injector analysis //
10// Origin: F.Prino, Torino, prino@to.infn.it //
11// //
12///////////////////////////////////////////////////////////////////
9f026db8 13
0e5e647a 14#include "AliITSOnlineSDD.h"
348f80b7 15
9f026db8 16
348f80b7 17class TH2F;
18class TGraphErrors;
19class AliITSOnlineSDDInjectors : public AliITSOnlineSDD {
20
21 public:
22 AliITSOnlineSDDInjectors();
979b5a5f 23 AliITSOnlineSDDInjectors(Int_t nddl, Int_t ncarlos, Int_t sid);
348f80b7 24 virtual ~AliITSOnlineSDDInjectors();
25
9f026db8 26 void SetThresholds(Float_t tl, Float_t th){
27 fLowThreshold=tl;
28 fHighThreshold=th;
29 }
30 void SetInjLineRange(Int_t jlin, Int_t tbmin, Int_t tbmax){
31 fTbMin[jlin]=tbmin;
32 fTbMax[jlin]=tbmax;
33 }
34 void SetPolOrder(Int_t n){fPolOrder=n;}
35 void SetMinDriftSpeed(Float_t vmin){fMinDriftSpeed=vmin;}
36 void SetMaxDriftSpeed(Float_t vmax){fMaxDriftSpeed=vmax;}
37 void SetMaxDriftSpeedErr(Float_t maxval){
38 fMaxDriftSpeedErr=maxval;
348f80b7 39 }
9f026db8 40 void SetFitLimits(Int_t firstpad,Int_t lastpad){
41 fFirstPadForFit=firstpad;
42 fLastPadForFit=lastpad;
348f80b7 43 }
9f026db8 44 void SetPadStatusCutForFit(Int_t cutval=1){
45 fPadStatusCutForFit=cutval;
348f80b7 46 }
9f026db8 47 void SetDefaults();
f4e26d31 48 void SetTimeStep(Float_t tstep) {
49 fTimeStep=tstep;
50 }
784a52ed 51 void SetUseTimeZeroSignal(Bool_t useTZ=kTRUE){
52 fUseTimeZeroSignal=useTZ;
53 }
9f026db8 54 TGraphErrors* GetTimeVsDistGraph(Int_t jpad) const;
55 TGraphErrors* GetDriftSpeedGraph() const;
84df0230 56 TGraphErrors* GetSelectedDriftSpeedGraph(Int_t minAcceptStatus) const;
9f026db8 57 Float_t* GetDriftSpeedFitParam()const{ return fParam;}
61606350 58 Float_t GetDriftSpeed(Int_t jpad) const{return fDriftSpeed[jpad];}
9f026db8 59 Float_t GetDriftSpeedErr(Int_t jpad) const{return fDriftSpeedErr[jpad];}
348f80b7 60 Float_t GetTimeBinZero() const{return fTbZero;}
9f026db8 61
f4e26d31 62 Float_t GetTimeStep() const{return fTimeStep;}
9f026db8 63 Int_t GetAnodeNumber(Int_t iInjPad) const;
64 Int_t GetInjPadNumberFromAnode(Int_t nAnode) const;
65 Int_t GetInjPadStatus(Int_t jpad) const;
66 Int_t GetAnodeStatus(Int_t nAnode) const{
67 Int_t jpad=GetInjPadNumberFromAnode(nAnode);
68 return GetInjPadStatus(jpad);
69 }
70 Float_t GetCentroid(Int_t jpad, Int_t jlin) const {
71 if(jpad<kInjPads && jlin<kInjLines) return fCentroid[jpad][jlin];
c668f182 72 else return -9999.;
73 }
9f026db8 74 Bool_t IsInjectorGood(Int_t jpad, Int_t jlin) const {
75 if(jpad<kInjPads && jlin<kInjLines) return fGoodInj[jpad][jlin];
c668f182 76 else return 0;
77 }
9f026db8 78 void PrintInjectorStatus();
348f80b7 79 void PrintCentroids();
4c82df4c 80 void WriteToASCII(Int_t evNumb, UInt_t timeStamp, Int_t optAppend=0);
348f80b7 81
82 void Reset();
83 void AnalyzeEvent(TH2F* his);
84 void FindGoodInjectors();
85 void FindCentroids();
9f026db8 86 void CalcDriftSpeed(Int_t jpad);
348f80b7 87 void CalcTimeBinZero();
9f026db8 88 void FitDriftSpeedVsAnode();
348f80b7 89
90 protected:
91 void SetPositions();
92 private:
93
9f026db8 94 enum {kInjPads = 33};
95 enum {kInjLines = 3};
348f80b7 96
97 AliITSOnlineSDDInjectors(const AliITSOnlineSDDInjectors& source);
98 AliITSOnlineSDDInjectors& operator = (const AliITSOnlineSDDInjectors& source);
9f026db8 99 static const Float_t fgkSaturation; // ADC saturation value (1008)
100 static const Float_t fgkDefaultLThreshold; // Default for fLowThreshold
101 static const Float_t fgkDefaultHThreshold; // Default for fHighThreshold
102 static const Float_t fgkDefaultMinSpeed; // Default for fMinDriftSpeed
103 static const Float_t fgkDefaultMaxSpeed; // Default for fMaxDriftSpeed
104 static const Float_t fgkDefaultMaxErr; // Default for fMaxDriftSpeedErr
105 static const Int_t fgkDefaultPolOrder; // Default for fPolOrder
f4e26d31 106 static const Float_t fgkDefaultTimeStep; // Default for fTimeStep
9f026db8 107 static const UShort_t fgkDefaultTbMin[kInjLines]; // Defaults for fTbMin
108 static const UShort_t fgkDefaultTbMax[kInjLines]; // Defaults for fTbMax
109
110
111 TH2F* fHisto; // histogram of channel counts
112 Float_t fTbZero; // Time zero for injector event
784a52ed 113 Float_t fRMSTbZero; // Error on time zero
9f026db8 114 Float_t fPosition[kInjLines]; // Coordinates of injector lines
115 UShort_t fTbMin[kInjLines]; // Minimum time bin for each line
116 UShort_t fTbMax[kInjLines]; // Maximum time bin for each line
117 Bool_t fGoodInj[kInjPads][kInjLines]; // array of good injectors
118 Float_t fCentroid[kInjPads][kInjLines]; // array of time bin centroids
119 Float_t fRMSCentroid[kInjPads][kInjLines]; // array of time rms of injectors
120 Float_t fDriftSpeed[kInjPads]; // drift speed
121 Float_t fDriftSpeedErr[kInjPads]; // error on drift speed
122 Float_t *fParam; // parameters of polinomial fit to
123 // drift speed vs. anode number
124 Int_t fPolOrder; // order of polinomial fit
125 Float_t fMinDriftSpeed; // Minimum value for drift speed
126 Float_t fMaxDriftSpeed; // Maximum value for drift speed
127 Float_t fMaxDriftSpeedErr; // Maximum value for error on drift speed
128 Float_t fLowThreshold; // Low threshold for injector signal
129 Float_t fHighThreshold; // High threshold for injector signal
130
131 Int_t fFirstPadForFit; // first injector pad used in fit
132 Int_t fLastPadForFit; // last injector pad used in fit
133 Int_t fPadStatusCutForFit; // minimum value of pad status for fit
134
f4e26d31 135 Float_t fTimeStep; // time bin value (25 or 50 ns)
784a52ed 136 Bool_t fUseTimeZeroSignal; // flag for usage of time zero signal
137 // in drift speed calculation
9f026db8 138
784a52ed 139 ClassDef(AliITSOnlineSDDInjectors,5)
348f80b7 140};
141#endif