1 #ifndef ALITRDCALIBTASK_H
\r
2 #define ALITRDCALIBTASK_H
\r
4 ///////////////////////////////////////////////////////////////////////////////
\r
6 // TRD calibration task for offline calibration //
\r
8 ///////////////////////////////////////////////////////////////////////////////
\r
23 class AliESDfriendTrack;
\r
24 class AliTRDtrackV1;
\r
25 class AliTRDCalibraFillHisto;
\r
26 class AliTRDcluster;
\r
27 class AliESDtrackCuts;
\r
30 #include "TObjString.h"
\r
31 #include "AliAnalysisTask.h"
\r
33 class AliTRDCalibTask : public AliAnalysisTask {
\r
35 AliTRDCalibTask(const char *name = "AliTRDCalibTask");
\r
36 virtual ~AliTRDCalibTask();
\r
38 virtual void ConnectInputData(Option_t *);
\r
39 virtual void CreateOutputObjects();
\r
40 virtual void Exec(Option_t *option);
\r
41 virtual void Terminate(Option_t *);
\r
42 virtual Bool_t Load(const Char_t *filename);
\r
45 void SetHisto2d(Bool_t histo2d) {fHisto2d=histo2d;};
\r
46 void SetVector2d(Bool_t vector2d) {fVector2d=vector2d;};
\r
47 void SetVdriftLinear(Bool_t vdriftLinear) {fVdriftLinear = vdriftLinear;};
\r
48 void SetNbTimeBins(Int_t nbTimeBins) {fNbTimeBins=nbTimeBins;};
\r
50 void SetNz(Short_t nz, Int_t i) {fNz[i]=nz;};
\r
51 void SetNrphi(Short_t nrphi, Int_t i) {fNrphi[i]=nrphi;};
\r
53 void AddSelectedTriggerClass(const char*name) {fSelectedTrigger->Add(new TObjString(name));};
\r
54 void SetReject(Bool_t rejected) {fRejected = rejected;};
\r
56 void SetESDtrackCuts(AliESDtrackCuts * const esdtrackCuts) {fEsdTrackCuts = esdtrackCuts;};
\r
57 void SetRequirePrimaryVertex(Bool_t requirePrimaryVertex) {fRequirePrimaryVertex = requirePrimaryVertex;};
\r
58 void SetMinNbOfContributors(Int_t minNbOfContributors) {fMinNbContributors = minNbOfContributors;};
\r
60 void SetLow(Int_t low) {fLow=low;};
\r
61 void SetHigh(Int_t high) {fHigh=high;};
\r
62 void SetFillZero(Bool_t fillZero) {fFillZero = fillZero;};
\r
63 void SetNormalizeNbOfCluster(Bool_t normalizeNbOfCluster = kTRUE) {fNormalizeNbOfCluster = normalizeNbOfCluster;};
\r
64 void SetMaxCluster(Float_t maxCluster) {fMaxCluster = maxCluster; };
\r
65 void SetNbMaxCluster(Short_t nbMaxCluster) {fNbMaxCluster = nbMaxCluster; };
\r
66 void SetOfflineTracks() {fOfflineTracks=kTRUE; fStandaloneTracks=kFALSE; };
\r
67 void SetStandaloneTracks() {fStandaloneTracks=kTRUE; fOfflineTracks=kFALSE; };
\r
69 void SetCalDetGain(AliTRDCalDet * const calDetGain) {fCalDetGain = calDetGain;};
\r
71 void SetMaxEvent(Int_t nbevents) { fMaxEvent = nbevents; };
\r
72 void SetDebug(Int_t debug) { fDebug = debug; };
\r
75 AliESDEvent *fESD; //! ESD object
\r
76 AliESDfriend *fESDfriend; //! ESD friend
\r
77 const AliESDtrack *fkEsdTrack; //! ESD track
\r
78 AliESDfriendTrack *fFriendTrack; //! ESD friend track
\r
79 TObject *fCalibObject; //! calibration objects attached to the ESD friend
\r
80 AliTRDtrackV1 *fTrdTrack; //! trdtrack
\r
81 AliTRDcluster *fCl; //! cluster
\r
83 TList *fListHist; //! list of histograms
\r
85 AliTRDCalibraFillHisto *fTRDCalibraFillHisto; //! calibration analyse object
\r
87 TH1I *fNEvents; //! counter
\r
89 TH1F *fNbTRDTrack; //! nb ESD tracks with TRD clusters
\r
90 TH1F *fNbTRDTrackOffline; //! nb ESD tracks with TRD clusters
\r
91 TH1F *fNbTRDTrackStandalone; //! nb ESD tracks with TRD clusters
\r
92 TH2F *fNbTPCTRDtrack; //! nb TPC and TRD tracks when problems
\r
94 TH1F *fNbTimeBin; //! nb Time Bin
\r
95 TH1F *fNbTimeBinOffline; //! nb Time Bin offline
\r
96 TH1F *fNbTimeBinStandalone; //! nb Time Bin standalone
\r
97 TH1F *fNbClusters; //! nb Clusters
\r
98 TH1F *fNbClustersOffline; //! nb Clusters offline
\r
99 TH1F *fNbClustersStandalone; //! nb Clusters standalone
\r
100 TH1F *fNbTracklets; //! nb Tracklets
\r
101 TH1F *fNbTrackletsOffline; //! nb Tracklets offline
\r
102 TH1F *fNbTrackletsStandalone; //! nb Tracklets standalone
\r
104 TH2I *fCH2dSum; //! CH2d charge all
\r
105 TProfile2D *fPH2dSum; //! PH2d PH all
\r
106 TH2I *fCH2dSM; //! CH2d per SM
\r
107 TProfile2D *fPH2dSM; //! PH2d per SM
\r
109 Bool_t fHisto2d; //! histo
\r
110 Bool_t fVector2d; //! vector
\r
111 Bool_t fVdriftLinear; //! vdrift Linear
\r
113 Int_t fNbTimeBins; //! number of timebins
\r
115 Short_t fNz[3]; // Nz mode
\r
116 Short_t fNrphi[3]; // Nrphi mode
\r
118 TObjArray *fSelectedTrigger; // Trigger class names accepted/rejected
\r
119 Bool_t fRejected; // Reject the selected trigger class
\r
121 AliESDtrackCuts *fEsdTrackCuts; // Quality cut on the AliESDtrack
\r
122 Bool_t fRequirePrimaryVertex; // Primary Vertex
\r
123 Int_t fMinNbContributors; // Min number of contributors
\r
125 Int_t fLow; // lower limit of nb of TRD clusters per tracklet
\r
126 Int_t fHigh; // higher limit of nb of TRD clusters per tracklet
\r
127 Bool_t fFillZero; // fill zero
\r
128 Bool_t fNormalizeNbOfCluster; // normalize with number of clusters (per default not)
\r
129 Float_t fRelativeScale; // relative scale for gas gain
\r
130 Float_t fMaxCluster; // Maxcluster
\r
131 Short_t fNbMaxCluster; // Number of tb at the end
\r
132 Bool_t fOfflineTracks; // Only Offline refitted tracks
\r
133 Bool_t fStandaloneTracks; // Take only standalone tracks
\r
135 AliTRDCalDet *fCalDetGain; // Calib object gain
\r
137 Int_t fMaxEvent; // max events
\r
138 Int_t fCounter; // max events
\r
139 Int_t fDebug; //! fDebug
\r
141 AliTRDCalibTask(const AliTRDCalibTask&);
\r
142 AliTRDCalibTask& operator=(const AliTRDCalibTask&);
\r
144 ClassDef(AliTRDCalibTask, 1);
\r