#ifndef ALIANALYSISTASKITSALIGNQA
#define ALIANALYSISTASKITSALIGNQA
class TList;
class TH1F;
class TH2F;
class TProfile;
class TTree;
class TString;
class AliESDEvent;
class AliESDfriend;
class AliITSTPArrayFit;
class AliTrackPointArray;
class AliITSSumTP;
#include "AliAnalysisTaskSE.h"
class AliAnalysisTaskITSAlignQA : public AliAnalysisTaskSE {
public:
enum {kEvAll=0,kEvCnt,kEvVtx,kEvPlp,kNTracks,kNEvStatBins, kEvAcc=kEvPlp};
AliAnalysisTaskITSAlignQA();
virtual ~AliAnalysisTaskITSAlignQA();
virtual void UserExec(Option_t *option);
virtual void UserCreateOutputObjects();
virtual void Terminate(Option_t *option);
void SetDoFillTPTree(Bool_t opt){
fDoFillTPTree=opt;
if (fDoFillTPTree) DefineOutput(2,TTree::Class());
}
void SetDoSPDResiduals(Bool_t opt){
fDoSPDResiduals=opt;
}
void SetDoSDDResiduals(Bool_t opt){
fDoSDDResiduals=opt;
}
void SetDoSSDResiduals(Bool_t opt){
fDoSSDResiduals=opt;
}
void SetDoSDDdEdxCalib(Bool_t opt){
fDoSDDdEdxCalib=opt;
}
void SetDoSDDVDriftCalib(Bool_t opt){
fDoSDDVDriftCalib=opt;
}
void SetDoSDDDriftTime(Bool_t opt){
fDoSDDDriftTime=opt;
}
void SetDoAllResiduals(){
fDoSPDResiduals=kTRUE;
fDoSDDResiduals=kTRUE;
fDoSSDResiduals=kTRUE;
}
void SetDoAll(){
SetDoAllResiduals();
fDoSDDdEdxCalib=kTRUE;
}
void SetUseITSstandaloneTracks(Bool_t use){
fUseITSsaTracks=use;
}
void SetLoadGeometryFromOCDB(Bool_t opt){
fLoadGeometry=opt;
}
void SetMinITSPoints(Int_t minp=3){
fMinITSpts=minp;
}
void SetMinTPCPoints(Int_t minp=70){
fMinTPCpts=minp;
}
void SetMinPt(Float_t minpt=1.0){
fMinPt=minpt;
}
void SetUseTPCMomentum(Bool_t v=kTRUE) { fUseTPCMomentum = v;}
void SetMinVtxContributors(Int_t n=5) { fMinVtxContributors = n; }
void SetUseVertex(Bool_t v=kTRUE) { fUseVertex = v; }
void SetUseVertexForZOnly(Bool_t v=kTRUE) { fUseVertexForZOnly = v; }
void SetRemovePileupWithSPD(Bool_t opt=kTRUE) { fRemovePileupWithSPD = opt; }
void SetMinMaxMult(Double_t mn=0,Double_t mx=1e9) {fMinMult=mn; fMaxMult=mx;}
void SetCutDCA(double xy, double z) {fCutDCAXY = xy; fCutDCAZ = z;}
void SetOCDBInfo(UInt_t runNb, const char *location) {
fRunNb=runNb;
fOCDBLocation=location;
}
Bool_t GetUseTPCMomentum() const {return fUseTPCMomentum;}
Bool_t AcceptTrack(const AliESDtrack * track, const AliESDVertex* vtx=0);
Bool_t AcceptVertex(const AliESDVertex * vtx, const AliESDVertex * vtxSPD);
Bool_t AcceptCentrality(const AliESDEvent *esd) const;
void CreateSPDHistos();
void CreateSDDHistos();
void CreateSSDHistos();
void FitAndFillSPD(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
void FitAndFillSDDrphi(const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
void FitAndFillSDDz(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
void FitAndFillSSD(Int_t iLayer, const AliTrackPointArray *array, Int_t npts, AliESDtrack * track);
void SetPtBinLimits(Int_t nBins, Double_t* xbins){
fNPtBins=nBins;
if(nBins>kMaxPtBins) fNPtBins=kMaxPtBins;
for(Int_t iBin=0; iBin<=fNPtBins; iBin++) fPtBinLimits[iBin]=xbins[iBin];
}
void LoadGeometryFromOCDB();
AliTrackPointArray* PrepareTrack(const AliTrackPointArray* inp, const AliESDVertex* vtx=0);
void PrepareVertexConstraint(const AliESDVertex* vtx, AliTrackPoint &point);
void CreateUserInfo();
void CopyUserInfo();
private:
AliAnalysisTaskITSAlignQA(const AliAnalysisTaskITSAlignQA &source);
AliAnalysisTaskITSAlignQA& operator=(const AliAnalysisTaskITSAlignQA &source);
enum {kNSPDmods = 240};
enum {kNSDDmods = 260};
enum {kNSSDmods = 1698};
enum {kMaxPtBins = 12};
enum {kVtxSensVID=14371};
TList* fOutput;
TH1F* fHistNEvents;
TH1F* fHistPtAccept;
TH2F* fHistSPDResidX[kNSPDmods];
TH2F* fHistSPDResidZ[kNSPDmods];
TH2F* fHistSDDResidX[kNSDDmods];
TH2F* fHistSDDResidZ[kNSDDmods];
TH2F* fHistSSDResidX[kNSSDmods];
TH2F* fHistSSDResidZ[kNSSDmods];
TH2F* fHistSDDResidXvsX[kNSDDmods];
TH2F* fHistSDDResidXvsZ[kNSDDmods];
TH2F* fHistSDDResidZvsX[kNSDDmods];
TH2F* fHistSDDResidZvsZ[kNSDDmods];
TH2F* fHistSDDdEdxvsDrTime[kNSDDmods];
TH1F* fHistSDDDrTimeAll[kNSDDmods];
TH1F* fHistSDDDrTimeExtra[kNSDDmods];
TH1F* fHistSDDDrTimeAttac[kNSDDmods];
TProfile* fHProfSDDResidXvsXD[kNSDDmods][2];
TProfile* fHProfSDDDrTimevsXD[kNSDDmods][2];
TProfile* fHProfSDDResidXvsZ[kNSDDmods][2];
TProfile* fHProfSDDDrTimevsZ[kNSDDmods][2];
Bool_t fDoSPDResiduals;
Bool_t fDoSDDResiduals;
Bool_t fDoSSDResiduals;
Bool_t fDoSDDdEdxCalib;
Bool_t fDoSDDVDriftCalib;
Bool_t fDoSDDDriftTime;
Bool_t fDoFillTPTree;
Bool_t fUseITSsaTracks;
Bool_t fLoadGeometry;
Bool_t fUseVertex;
Bool_t fUseVertexForZOnly;
Bool_t fUseTPCMomentum;
Int_t fMinVtxContributors;
Bool_t fRemovePileupWithSPD;
Int_t fMinITSpts;
Int_t fMinTPCpts;
Float_t fMinPt;
Int_t fNPtBins;
Double_t fMinMult;
Double_t fMaxMult;
Double_t fPtBinLimits[kMaxPtBins+1];
Double_t fCutDCAXY;
Double_t fCutDCAZ;
AliITSTPArrayFit* fFitter;
AliITSSumTP* fITSSumTP;
TTree* fTPTree;
Int_t fRunNb;
TString fOCDBLocation;
ClassDef(AliAnalysisTaskITSAlignQA,6);
};
#endif
AliAnalysisTaskITSAlignQA.h:1 AliAnalysisTaskITSAlignQA.h:2 AliAnalysisTaskITSAlignQA.h:3 AliAnalysisTaskITSAlignQA.h:4 AliAnalysisTaskITSAlignQA.h:5 AliAnalysisTaskITSAlignQA.h:6 AliAnalysisTaskITSAlignQA.h:7 AliAnalysisTaskITSAlignQA.h:8 AliAnalysisTaskITSAlignQA.h:9 AliAnalysisTaskITSAlignQA.h:10 AliAnalysisTaskITSAlignQA.h:11 AliAnalysisTaskITSAlignQA.h:12 AliAnalysisTaskITSAlignQA.h:13 AliAnalysisTaskITSAlignQA.h:14 AliAnalysisTaskITSAlignQA.h:15 AliAnalysisTaskITSAlignQA.h:16 AliAnalysisTaskITSAlignQA.h:17 AliAnalysisTaskITSAlignQA.h:18 AliAnalysisTaskITSAlignQA.h:19 AliAnalysisTaskITSAlignQA.h:20 AliAnalysisTaskITSAlignQA.h:21 AliAnalysisTaskITSAlignQA.h:22 AliAnalysisTaskITSAlignQA.h:23 AliAnalysisTaskITSAlignQA.h:24 AliAnalysisTaskITSAlignQA.h:25 AliAnalysisTaskITSAlignQA.h:26 AliAnalysisTaskITSAlignQA.h:27 AliAnalysisTaskITSAlignQA.h:28 AliAnalysisTaskITSAlignQA.h:29 AliAnalysisTaskITSAlignQA.h:30 AliAnalysisTaskITSAlignQA.h:31 AliAnalysisTaskITSAlignQA.h:32 AliAnalysisTaskITSAlignQA.h:33 AliAnalysisTaskITSAlignQA.h:34 AliAnalysisTaskITSAlignQA.h:35 AliAnalysisTaskITSAlignQA.h:36 AliAnalysisTaskITSAlignQA.h:37 AliAnalysisTaskITSAlignQA.h:38 AliAnalysisTaskITSAlignQA.h:39 AliAnalysisTaskITSAlignQA.h:40 AliAnalysisTaskITSAlignQA.h:41 AliAnalysisTaskITSAlignQA.h:42 AliAnalysisTaskITSAlignQA.h:43 AliAnalysisTaskITSAlignQA.h:44 AliAnalysisTaskITSAlignQA.h:45 AliAnalysisTaskITSAlignQA.h:46 AliAnalysisTaskITSAlignQA.h:47 AliAnalysisTaskITSAlignQA.h:48 AliAnalysisTaskITSAlignQA.h:49 AliAnalysisTaskITSAlignQA.h:50 AliAnalysisTaskITSAlignQA.h:51 AliAnalysisTaskITSAlignQA.h:52 AliAnalysisTaskITSAlignQA.h:53 AliAnalysisTaskITSAlignQA.h:54 AliAnalysisTaskITSAlignQA.h:55 AliAnalysisTaskITSAlignQA.h:56 AliAnalysisTaskITSAlignQA.h:57 AliAnalysisTaskITSAlignQA.h:58 AliAnalysisTaskITSAlignQA.h:59 AliAnalysisTaskITSAlignQA.h:60 AliAnalysisTaskITSAlignQA.h:61 AliAnalysisTaskITSAlignQA.h:62 AliAnalysisTaskITSAlignQA.h:63 AliAnalysisTaskITSAlignQA.h:64 AliAnalysisTaskITSAlignQA.h:65 AliAnalysisTaskITSAlignQA.h:66 AliAnalysisTaskITSAlignQA.h:67 AliAnalysisTaskITSAlignQA.h:68 AliAnalysisTaskITSAlignQA.h:69 AliAnalysisTaskITSAlignQA.h:70 AliAnalysisTaskITSAlignQA.h:71 AliAnalysisTaskITSAlignQA.h:72 AliAnalysisTaskITSAlignQA.h:73 AliAnalysisTaskITSAlignQA.h:74 AliAnalysisTaskITSAlignQA.h:75 AliAnalysisTaskITSAlignQA.h:76 AliAnalysisTaskITSAlignQA.h:77 AliAnalysisTaskITSAlignQA.h:78 AliAnalysisTaskITSAlignQA.h:79 AliAnalysisTaskITSAlignQA.h:80 AliAnalysisTaskITSAlignQA.h:81 AliAnalysisTaskITSAlignQA.h:82 AliAnalysisTaskITSAlignQA.h:83 AliAnalysisTaskITSAlignQA.h:84 AliAnalysisTaskITSAlignQA.h:85 AliAnalysisTaskITSAlignQA.h:86 AliAnalysisTaskITSAlignQA.h:87 AliAnalysisTaskITSAlignQA.h:88 AliAnalysisTaskITSAlignQA.h:89 AliAnalysisTaskITSAlignQA.h:90 AliAnalysisTaskITSAlignQA.h:91 AliAnalysisTaskITSAlignQA.h:92 AliAnalysisTaskITSAlignQA.h:93 AliAnalysisTaskITSAlignQA.h:94 AliAnalysisTaskITSAlignQA.h:95 AliAnalysisTaskITSAlignQA.h:96 AliAnalysisTaskITSAlignQA.h:97 AliAnalysisTaskITSAlignQA.h:98 AliAnalysisTaskITSAlignQA.h:99 AliAnalysisTaskITSAlignQA.h:100 AliAnalysisTaskITSAlignQA.h:101 AliAnalysisTaskITSAlignQA.h:102 AliAnalysisTaskITSAlignQA.h:103 AliAnalysisTaskITSAlignQA.h:104 AliAnalysisTaskITSAlignQA.h:105 AliAnalysisTaskITSAlignQA.h:106 AliAnalysisTaskITSAlignQA.h:107 AliAnalysisTaskITSAlignQA.h:108 AliAnalysisTaskITSAlignQA.h:109 AliAnalysisTaskITSAlignQA.h:110 AliAnalysisTaskITSAlignQA.h:111 AliAnalysisTaskITSAlignQA.h:112 AliAnalysisTaskITSAlignQA.h:113 AliAnalysisTaskITSAlignQA.h:114 AliAnalysisTaskITSAlignQA.h:115 AliAnalysisTaskITSAlignQA.h:116 AliAnalysisTaskITSAlignQA.h:117 AliAnalysisTaskITSAlignQA.h:118 AliAnalysisTaskITSAlignQA.h:119 AliAnalysisTaskITSAlignQA.h:120 AliAnalysisTaskITSAlignQA.h:121 AliAnalysisTaskITSAlignQA.h:122 AliAnalysisTaskITSAlignQA.h:123 AliAnalysisTaskITSAlignQA.h:124 AliAnalysisTaskITSAlignQA.h:125 AliAnalysisTaskITSAlignQA.h:126 AliAnalysisTaskITSAlignQA.h:127 AliAnalysisTaskITSAlignQA.h:128 AliAnalysisTaskITSAlignQA.h:129 AliAnalysisTaskITSAlignQA.h:130 AliAnalysisTaskITSAlignQA.h:131 AliAnalysisTaskITSAlignQA.h:132 AliAnalysisTaskITSAlignQA.h:133 AliAnalysisTaskITSAlignQA.h:134 AliAnalysisTaskITSAlignQA.h:135 AliAnalysisTaskITSAlignQA.h:136 AliAnalysisTaskITSAlignQA.h:137 AliAnalysisTaskITSAlignQA.h:138 AliAnalysisTaskITSAlignQA.h:139 AliAnalysisTaskITSAlignQA.h:140 AliAnalysisTaskITSAlignQA.h:141 AliAnalysisTaskITSAlignQA.h:142 AliAnalysisTaskITSAlignQA.h:143 AliAnalysisTaskITSAlignQA.h:144 AliAnalysisTaskITSAlignQA.h:145 AliAnalysisTaskITSAlignQA.h:146 AliAnalysisTaskITSAlignQA.h:147 AliAnalysisTaskITSAlignQA.h:148 AliAnalysisTaskITSAlignQA.h:149 AliAnalysisTaskITSAlignQA.h:150 AliAnalysisTaskITSAlignQA.h:151 AliAnalysisTaskITSAlignQA.h:152 AliAnalysisTaskITSAlignQA.h:153 AliAnalysisTaskITSAlignQA.h:154 AliAnalysisTaskITSAlignQA.h:155 AliAnalysisTaskITSAlignQA.h:156 AliAnalysisTaskITSAlignQA.h:157 AliAnalysisTaskITSAlignQA.h:158 AliAnalysisTaskITSAlignQA.h:159 AliAnalysisTaskITSAlignQA.h:160 AliAnalysisTaskITSAlignQA.h:161 AliAnalysisTaskITSAlignQA.h:162 AliAnalysisTaskITSAlignQA.h:163 AliAnalysisTaskITSAlignQA.h:164 AliAnalysisTaskITSAlignQA.h:165 AliAnalysisTaskITSAlignQA.h:166 AliAnalysisTaskITSAlignQA.h:167 AliAnalysisTaskITSAlignQA.h:168 AliAnalysisTaskITSAlignQA.h:169 AliAnalysisTaskITSAlignQA.h:170 AliAnalysisTaskITSAlignQA.h:171 AliAnalysisTaskITSAlignQA.h:172 AliAnalysisTaskITSAlignQA.h:173 AliAnalysisTaskITSAlignQA.h:174 AliAnalysisTaskITSAlignQA.h:175 AliAnalysisTaskITSAlignQA.h:176 AliAnalysisTaskITSAlignQA.h:177 AliAnalysisTaskITSAlignQA.h:178 AliAnalysisTaskITSAlignQA.h:179 AliAnalysisTaskITSAlignQA.h:180 AliAnalysisTaskITSAlignQA.h:181 AliAnalysisTaskITSAlignQA.h:182 AliAnalysisTaskITSAlignQA.h:183 AliAnalysisTaskITSAlignQA.h:184 AliAnalysisTaskITSAlignQA.h:185 AliAnalysisTaskITSAlignQA.h:186 AliAnalysisTaskITSAlignQA.h:187 AliAnalysisTaskITSAlignQA.h:188 AliAnalysisTaskITSAlignQA.h:189 AliAnalysisTaskITSAlignQA.h:190 AliAnalysisTaskITSAlignQA.h:191 AliAnalysisTaskITSAlignQA.h:192 AliAnalysisTaskITSAlignQA.h:193 AliAnalysisTaskITSAlignQA.h:194