1 #ifndef ALITRDCALIBTASK_H
2 #define ALITRDCALIBTASK_H
4 ///////////////////////////////////////////////////////////////////////////////
6 // TRD calibration task for offline calibration //
8 ///////////////////////////////////////////////////////////////////////////////
24 class AliESDfriendTrack;
27 class AliTRDCalibraFillHisto;
29 class AliESDtrackCuts;
31 class AliTRDCalibChamberStatus;
33 #include "TObjString.h"
34 #include "AliAnalysisTaskSE.h"
37 class AliTRDCalibTask : public AliAnalysisTaskSE {
39 AliTRDCalibTask(const char *name = "AliTRDCalibTask");
40 virtual ~AliTRDCalibTask();
42 // virtual void ConnectInputData(Option_t *);
43 virtual void UserCreateOutputObjects();
44 virtual void UserExec(Option_t *);
45 virtual void Terminate(Option_t *);
46 virtual Bool_t Load(const Char_t *filename);
47 virtual Bool_t Load(TList *lister);
48 virtual Long64_t Merge(TCollection *li);
49 void AddTask(const AliTRDCalibTask * calibTask);
50 Bool_t FindP1TrackPHtrackletV1Test(const AliTRDseedV1 *tracklet, Int_t nbclusters);
51 TList *GetList() const {return fListHist;};
53 void SetOnInstance(Bool_t onInstance) {fOnInstance=onInstance;};
54 void SetHisto2d(Bool_t histo2d) {fHisto2d=histo2d;};
55 void SetVector2d(Bool_t vector2d) {fVector2d=vector2d;};
56 void SetVdriftLinear(Bool_t vdriftLinear) {fVdriftLinear = vdriftLinear;};
57 void SetExbAlt(Bool_t exbalt) {fExbAlt = exbalt;};
58 void SetNbTimeBins(Int_t nbTimeBins) {fNbTimeBins=nbTimeBins;};
59 void SetNumberBinCharge(Short_t nbBinCharge) {fNumberBinCharge=nbBinCharge;};
60 void SetDebugLevelTRDCalibraFillHisto(Short_t debugLevelTRDCalibraFillHisto) {fDebugLevelTRDCalibraFillHisto = debugLevelTRDCalibraFillHisto;};
63 void SetNz(Short_t nz, Int_t i) {fNz[i]=nz;};
64 void SetNrphi(Short_t nrphi, Int_t i) {fNrphi[i]=nrphi;};
66 void SetSelectTrigger(Bool_t selectTrigger) {fSelectTrigger = selectTrigger;};
67 void AddSelectedTriggerClass(const char*name) {fSelectedTrigger->Add(new TObjString(name));};
68 void SetReject(Bool_t rejected) {fRejected = rejected;};
70 void SetESDtrackCuts(AliESDtrackCuts * const esdtrackCuts) {fEsdTrackCuts = esdtrackCuts;};
71 void SetRequirePrimaryVertex(Bool_t requirePrimaryVertex) {fRequirePrimaryVertex = requirePrimaryVertex;};
72 void SetUseTPCVertex() {fVtxTPC=kTRUE ; fVtxSPD=kFALSE;}
73 void SetUseSPDVertex() {fVtxTPC=kFALSE; fVtxSPD=kTRUE ;}
74 void SetMinNbOfContributors(Int_t minNbOfContributors) {fMinNbContributors = minNbOfContributors;};
75 void SetRangePrimaryVertexZ(Double_t rangePrimaryVertexZ) {fRangePrimaryVertexZ = TMath::Abs(rangePrimaryVertexZ);};
76 void SetMinNbTracks(Int_t minNbTracks) {fMinNbTracks = minNbTracks;};
77 void SetMaxNbTracks(Int_t maxNbTracks) {fMaxNbTracks = maxNbTracks;};
78 void SetCutWithVdriftCalib(Bool_t cutWithVdriftCalib) {fCutWithVdriftCalib = cutWithVdriftCalib;};
79 void SetMinNbTRDtracklets(Int_t minNbTRDtracklets) {fMinNbTRDtracklets = minNbTRDtracklets;};
80 void SetMinTRDMometum(Double_t minTRDMomentum) {fMinTRDMomentum = minTRDMomentum;};
81 void SetScaleGainWithTPCSignal(Bool_t scaleGainWithTPCSignal) {fScaleGainWithTPCSignal = scaleGainWithTPCSignal;};
83 void SetVersionGainUsed(Int_t versionGainUsed) { fVersionGainUsed = versionGainUsed; }
84 void SetSubVersionGainUsed(Int_t subVersionGainUsed) { fSubVersionGainUsed = subVersionGainUsed; }
85 void SetVersionGainLocalUsed(Int_t versionGainLocalUsed) { fVersionGainLocalUsed = versionGainLocalUsed; }
86 void SetSubVersionGainLocalUsed(Int_t subVersionGainLocalUsed) { fSubVersionGainLocalUsed = subVersionGainLocalUsed; }
87 void SetVersionVdriftUsed(Int_t versionVdriftUsed) { fVersionVdriftUsed = versionVdriftUsed; }
88 void SetSubVersionVdriftUsed(Int_t subVersionVdriftUsed) { fSubVersionVdriftUsed = subVersionVdriftUsed; }
90 void SetLow(Int_t low) {fLow=low;};
91 void SetHigh(Int_t high) {fHigh=high;};
92 void SetFillZero(Bool_t fillZero) {fFillZero = fillZero;};
93 void SetNormalizeNbOfCluster(Bool_t normalizeNbOfCluster = kTRUE) {fNormalizeNbOfCluster = normalizeNbOfCluster;};
94 void SetMaxCluster(Float_t maxCluster) {fMaxCluster = maxCluster; };
95 void SetNbMaxCluster(Short_t nbMaxCluster) {fNbMaxCluster = nbMaxCluster; };
96 void SetOfflineTracks() {fOfflineTracks=kTRUE; fStandaloneTracks=kFALSE; };
97 void SetStandaloneTracks() {fStandaloneTracks=kTRUE; fOfflineTracks=kFALSE; };
99 void SetCalDetGain(AliTRDCalDet * const calDetGain) {fCalDetGain = calDetGain;};
101 void SetMaxEvent(Int_t nbevents) { fMaxEvent = nbevents; };
102 void SetDebug(Int_t debug) { fDebug = debug; };
104 Bool_t IsPHQon() const {return fPHQon;}
105 void SetPHQon(const Bool_t kphq){ fPHQon = kphq; }
108 Bool_t SetVersionSubversion();
109 Bool_t ParticleGood(int i) const;
111 AliESDEvent *fESD; //! ESD object
112 const AliESDtrack *fkEsdTrack; //! ESD track
113 AliESDfriendTrack *fFriendTrack; //! ESD friend track
114 TObject *fCalibObject; //! calibration objects attached to the ESD friend
115 AliTRDtrackV1 *fTrdTrack; //! trdtrack
116 AliTRDcluster *fCl; //! cluster
118 TList *fListHist; //! list of histograms
120 AliTRDCalibraFillHisto *fTRDCalibraFillHisto; //! calibration analyse object
121 AliTRDCalibChamberStatus *fTRDChamberStatus; //! calibration chamber status
123 TH1I *fNEvents; //! counter
124 TH1I *fNEventsInput; //! counter
126 TH1F *fNbTRDTrack; //! nb ESD tracks with TRD clusters
127 TH1F *fNbTRDTrackOffline; //! nb ESD tracks with TRD clusters
128 TH1F *fNbTRDTrackStandalone; //! nb ESD tracks with TRD clusters
129 TH2F *fNbTPCTRDtrack; //! nb TPC and TRD tracks when problems
130 TH2F *fNbGoodTracks; //! nb of good tracks
132 TH1F *fNbTimeBin; //! nb Time Bin
133 TH1F *fNbTimeBinOffline; //! nb Time Bin offline
134 TH1F *fNbTimeBinStandalone; //! nb Time Bin standalone
135 TH1F *fNbClusters; //! nb Clusters
136 TH1F *fNbClustersOffline; //! nb Clusters offline
137 TH1F *fNbClustersStandalone; //! nb Clusters standalone
138 TH1F *fNbTracklets; //! nb Tracklets
139 TH1F *fNbTrackletsOffline; //! nb Tracklets offline
140 TH1F *fNbTrackletsStandalone; //! nb Tracklets standalone
142 TH2F *fAbsoluteGain; //! Absolute Gain without AliESDfriend
143 TH2I *fCH2dSum; //! CH2d charge all
144 TProfile2D *fPH2dSum; //! PH2d PH all
145 TH2I *fCH2dSM; //! CH2d per SM
146 TProfile2D *fPH2dSM; //! PH2d per SM
147 TH2I *fCH2dTest; //! CH2d for test
148 TProfile2D *fPH2dTest; //! PH2d for test
149 TH2S *fLinearVdriftTest; //! VdriftLinear for test
151 Bool_t fOnInstance; // On Instance
152 Bool_t fHisto2d; // histo
153 Bool_t fVector2d; // vector
154 Bool_t fVdriftLinear; // vdrift Linear
155 Bool_t fExbAlt; // alternative exb calculation
157 Short_t fDebugLevelTRDCalibraFillHisto; // Debug Level Fill Histo
158 Int_t fNbTimeBins; // number of timebins
159 Short_t fNumberBinCharge; // Number of bins for the gain factor
161 Short_t fNz[3]; // Nz mode
162 Short_t fNrphi[3]; // Nrphi mode
164 Bool_t fSelectTrigger; // Select trigger
165 TObjArray *fSelectedTrigger; // Trigger class names accepted/rejected
166 Bool_t fRejected; // Reject the selected trigger class
168 AliESDtrackCuts *fEsdTrackCuts; // Quality cut on the AliESDtrack
169 Bool_t fRequirePrimaryVertex; // Primary Vertex
170 Bool_t fVtxTPC; // Flag for use of TPC vertex
171 Bool_t fVtxSPD; // Flag for use of SPD vertex
172 Int_t fMinNbContributors; // Min number of contributors
173 Double_t fRangePrimaryVertexZ; // Were the primary vertex is
174 Int_t fMinNbTracks; // Min Nb Tracks
175 Int_t fMaxNbTracks; // Max Nb Tracks
176 Bool_t fCutWithVdriftCalib; // CutWithVdriftCalib for the gain and PH
177 Int_t fMinNbTRDtracklets; // Min number of TRD tracklets
178 Float_t fMinTRDMomentum; // Min TRD momentum
179 Bool_t fScaleGainWithTPCSignal; // Scale the TPC gain with the TPC signal
181 Int_t fLow; // lower limit of nb of TRD clusters per tracklet
182 Int_t fHigh; // higher limit of nb of TRD clusters per tracklet
183 Bool_t fFillZero; // fill zero
184 Bool_t fNormalizeNbOfCluster; // normalize with number of clusters (per default not)
185 Float_t fRelativeScale; // relative scale for gas gain
186 Float_t fMaxCluster; // Maxcluster
187 Short_t fNbMaxCluster; // Number of tb at the end
188 Bool_t fOfflineTracks; // Only Offline refitted tracks
189 Bool_t fStandaloneTracks; // Take only standalone tracks
191 Int_t fFirstRunGain; // FirstRunGainUsed
192 Int_t fVersionGainUsed; // VersionGainUsed
193 Int_t fSubVersionGainUsed; // SubVersionGainUsed
194 Int_t fFirstRunGainLocal; // FirstRunGainLocalUsed
195 Int_t fVersionGainLocalUsed; // VersionGainLocalUsed
196 Int_t fSubVersionGainLocalUsed; // SubVersionGainLocalUsed
197 Int_t fFirstRunVdrift; // FirstRunVdriftUsed
198 Int_t fVersionVdriftUsed; // VersionVdriftUsed
199 Int_t fSubVersionVdriftUsed; // SubVersionVdriftUsed
200 Int_t fFirstRunExB; // FirstRunExBUsed
201 Int_t fVersionExBUsed; // VersionExBUsed
202 Int_t fSubVersionExBUsed; // SubVersionExBUsed
204 AliTRDCalDet *fCalDetGain; // Calib object gain
206 Int_t fMaxEvent; // max events
207 Int_t fCounter; // max events
209 Bool_t fPHQon; //switch of phq
211 AliTRDCalibTask(const AliTRDCalibTask&);
212 AliTRDCalibTask& operator=(const AliTRDCalibTask&);
214 ClassDef(AliTRDCalibTask, 3);