1 #ifndef ALIANALYSISTASKITSALIGNQA
2 #define ALIANALYSISTASKITSALIGNQA
4 /* Copyright(c) 1998-2012, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //*************************************************************************
8 // Class AliAnalysiTaskITSAlignQA
9 // AliAnalysisTaskSE to extract from ESD + ESDfriends
10 // the track-to-point residuals and dE/dx vs, time for SDD modules
12 // Author: F. Prino, prino@to.infn.it
13 //*************************************************************************
23 class AliITSTPArrayFit;
24 class AliTrackPointArray;
26 #include "AliAnalysisTaskSE.h"
28 class AliAnalysisTaskITSAlignQA : public AliAnalysisTaskSE {
31 enum {kEvAll=0,kEvCnt,kEvVtx,kEvPlp,kNTracks,kNEvStatBins, kEvAcc=kEvPlp};
32 AliAnalysisTaskITSAlignQA();
33 virtual ~AliAnalysisTaskITSAlignQA();
35 virtual void UserExec(Option_t *option);
36 virtual void UserCreateOutputObjects();
37 virtual void Terminate(Option_t *option);
39 void SetDoSPDResiduals(Bool_t opt){
42 void SetDoSDDResiduals(Bool_t opt){
45 void SetDoSSDResiduals(Bool_t opt){
48 void SetDoSDDdEdxCalib(Bool_t opt){
51 void SetDoSDDVDriftCalib(Bool_t opt){
52 fDoSDDVDriftCalib=opt;
54 void SetDoSDDDriftTime(Bool_t opt){
57 void SetDoAllResiduals(){
58 fDoSPDResiduals=kTRUE;
59 fDoSDDResiduals=kTRUE;
60 fDoSSDResiduals=kTRUE;
64 fDoSDDdEdxCalib=kTRUE;
66 void SetUseITSstandaloneTracks(Bool_t use){
69 void SetLoadGeometryFromOCDB(Bool_t opt){
73 void SetMinITSPoints(Int_t minp=3){
76 void SetMinTPCPoints(Int_t minp=70){
79 void SetMinPt(Float_t minpt=1.0){
82 void SetMinVtxContributors(Int_t n=5) { fMinVtxContributors = n; }
83 void SetUseVertex(Bool_t v=kTRUE) { fUseVertex = v; }
84 void SetUseVertexForZOnly(Bool_t v=kTRUE) { fUseVertexForZOnly = v; } // Use the vertex for SDD Z residuals only
85 void SetRemovePileupWithSPD(Bool_t opt=kTRUE) { fRemovePileupWithSPD = opt; }
86 void SetMinMaxMult(Double_t mn=0,Double_t mx=1e9) {fMinMult=mn; fMaxMult=mx;}
87 void SetOCDBInfo(UInt_t runNb, const char *location) {
89 fOCDBLocation=location;
92 Bool_t AcceptTrack(const AliESDtrack * track);
93 Bool_t AcceptVertex(const AliESDVertex * vtx, const AliESDVertex * vtxSPD);
94 Bool_t AcceptCentrality(const AliESDEvent *esd) const;
95 void CreateSPDHistos();
96 void CreateSDDHistos();
97 void CreateSSDHistos();
99 void FitAndFillSPD(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
100 void FitAndFillSDDrphi(const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
101 void FitAndFillSDDz(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
102 void FitAndFillSSD(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
103 void SetPtBinLimits(Int_t nBins, Double_t* xbins){
105 if(nBins>kMaxPtBins) fNPtBins=kMaxPtBins;
106 for(Int_t iBin=0; iBin<=fNPtBins; iBin++) fPtBinLimits[iBin]=xbins[iBin];
108 void LoadGeometryFromOCDB();
109 AliTrackPointArray* PrepareTrack(const AliTrackPointArray* inp, const AliESDVertex* vtx=0);
110 void PrepareVertexConstraint(const AliESDVertex* vtx, AliTrackPoint &point);
112 AliAnalysisTaskITSAlignQA(const AliAnalysisTaskITSAlignQA &source);
113 AliAnalysisTaskITSAlignQA& operator=(const AliAnalysisTaskITSAlignQA &source);
115 enum {kNSPDmods = 240};
116 enum {kNSDDmods = 260};
117 enum {kNSSDmods = 1698};
118 enum {kMaxPtBins = 12};
119 enum {kVtxSensVID=14371}; // dummy VID for "vertex" point
121 TList* fOutput; //! Histos with residuals
122 TH1F* fHistNEvents; //! histo with N of events
123 TH1F* fHistPtAccept; //! histo of pt distribution of accepted tracks
125 TH2F* fHistSPDResidX[kNSPDmods]; //! histos of SPD residuals along Xloc vs. Pt
126 TH2F* fHistSPDResidZ[kNSPDmods]; //! histos of SPD residuals along Zloc vs. Pt
127 TH2F* fHistSDDResidX[kNSDDmods]; //! histos of SDD residuals along Xloc vs. Pt
128 TH2F* fHistSDDResidZ[kNSDDmods]; //! histos of SDD residuals along Zloc vs. Pt
129 TH2F* fHistSSDResidX[kNSSDmods]; //! histos of SSD residuals along Xloc vs. Pt
130 TH2F* fHistSSDResidZ[kNSSDmods]; //! histos of SSD residuals along Zloc vs. Pt
132 TH2F* fHistSDDResidXvsX[kNSDDmods]; //! histos of SDD residuals along Xloc vs. Xloc
133 TH2F* fHistSDDResidXvsZ[kNSDDmods]; //! histos of SDD residuals along Xloc vs. Zloc
134 TH2F* fHistSDDResidZvsX[kNSDDmods]; //! histos of SDD residuals along Zloc vs. Xloc
135 TH2F* fHistSDDResidZvsZ[kNSDDmods]; //! histos of SDD residuals along Zloc vs. Zloc
136 TH2F* fHistSDDdEdxvsDrTime[kNSDDmods]; //! histos of SDD dE/dx vs. drift time
137 TH1F* fHistSDDDrTimeAll[kNSDDmods]; //! histos of SDD drift time (all clusters)
138 TH1F* fHistSDDDrTimeExtra[kNSDDmods]; //! histos of SDD drift time (extra clusters)
139 TH1F* fHistSDDDrTimeAttac[kNSDDmods]; //! histos of SDD drift time (attached clusters)
142 TProfile* fHProfSDDResidXvsXD[kNSDDmods][2]; // ! profile histos of SDD residuals along Xloc vs. Drift distance, each side separately
143 TProfile* fHProfSDDDrTimevsXD[kNSDDmods][2]; // ! profile histos of SDD drift time vs. Drift distance, each side separately
144 TProfile* fHProfSDDResidXvsZ[kNSDDmods][2]; // ! profile histos of SDD residuals along Xloc vs. Z (anode), each side separately
145 TProfile* fHProfSDDDrTimevsZ[kNSDDmods][2]; // ! profile histos of SDD drift time vs. Z (anode), each side separately
147 Bool_t fDoSPDResiduals; // Flag to enable histos of SPD residuals
148 Bool_t fDoSDDResiduals; // Flag to enable histos of SDD residuals
149 Bool_t fDoSSDResiduals; // Flag to enable histos of SSD residuals
150 Bool_t fDoSDDdEdxCalib; // Flag to enable histos for SDD dE/dx calibration
151 Bool_t fDoSDDVDriftCalib; // Flag to enable histos for SDD VDrift calibration
152 Bool_t fDoSDDDriftTime; // Flag to enable histos for SDD Drift times
153 Bool_t fUseITSsaTracks; // Flag for using standalone ITS tracks
154 Bool_t fLoadGeometry; // Flag to control the loading of geometry from OCDB
155 Bool_t fUseVertex; // Use the vertex as an extra point
156 Bool_t fUseVertexForZOnly; // Use the vertex for SDD Z residuals only
157 Int_t fMinVtxContributors; // min N contributors to accept vertex if fUseVertex is on
158 Bool_t fRemovePileupWithSPD; // Use/not use pileup rejection with SPD
159 Int_t fMinITSpts; // Minimum number of ITS points per track
160 Int_t fMinTPCpts; // Minimum number of TPC points per track
161 Float_t fMinPt; // Minimum pt to accept tracks
162 Int_t fNPtBins; // number of pt bins
163 Double_t fMinMult; // min centrality cut
164 Double_t fMaxMult; // max centrality cut
165 Double_t fPtBinLimits[kMaxPtBins+1]; // limits of Pt bins
167 AliITSTPArrayFit* fFitter; // Track Point fitter
168 Int_t fRunNb; // Run number
169 TString fOCDBLocation; // OCDB location
171 ClassDef(AliAnalysisTaskITSAlignQA,5);