1 #ifndef ALISPDCLUSTTASK_H
2 #define ALISPDCLUSTTASK_H
4 ///////////////////////////////////////////////////////////////////////////
5 // Class AliSPDClustTask //
6 // Analysis task to produce data and MC histos needed for tracklets //
7 // dNdEta extraction in multiple bins in one go //
8 // Author: ruben.shahoyan@cern.ch //
9 ///////////////////////////////////////////////////////////////////////////
17 class AliITSMultReconstructor;
18 class AliESDTrackCuts;
20 #include "../ITS/AliITSsegmentationSPD.h"
21 #include "AliAnalysisTaskSE.h"
22 #include "AliTriggerAnalysis.h"
25 class AliSPDClustTask : public AliAnalysisTaskSE {
28 kHPtPion=50,kHPtKaon=51,kHPtProton=52,kHPtK0S=53,kHPtK0L=54,kHPtLambda=55,
30 kClTypevsEta=0,kClZ=1,kClEta=2,kClTypevsEtaW=3,kClZW=4,kClEtaW=5,
31 kClZPions=6, kClEtaPions=7, kClZPionsW=8, kClEtaPionsW=9,
32 kClZKaons=10,kClEtaKaons=11,kClZKaonsW=12,kClEtaKaonsW=13,
33 kClZProtons=14,kClEtaProtons=15,kClZProtonsW=16,kClEtaProtonsW=17,
34 kClZK0s=18,kClEtaK0s=19,kClZK0sW=20,kClEtaK0sW=21,
35 kClZLambda0s=22,kClEtaLambda0s=23,kClZLambda0sW=24,kClEtaLambda0sW=25}; // to facilitated access to histos, see BookHistos
37 AliSPDClustTask(const char *name = "AliSPDClustTask");
38 virtual ~AliSPDClustTask();
40 virtual void UserCreateOutputObjects();
41 virtual void UserExec(Option_t *option);
42 virtual void Terminate(Option_t *);
43 void SetUseMC(Bool_t mc = kFALSE) {fUseMC = mc;}
44 TObjArray* BookHistos();
45 void FillHistos(AliStack *stack);
47 void SetNStdDev(Float_t f=1.) {fNStdDev = f<1e-5 ? 1e-5:f;}
48 void SetScaleDThetaBySin2T(Bool_t v=kFALSE) {fScaleDTBySin2T = v;}
49 void SetCutOnDThetaX(Bool_t v=kFALSE) {fCutOnDThetaX = v;}
50 void SetPhiWindow(float w=0.08) {fDPhiWindow = w<1e-5 ? 1e-5:w;}
51 void SetThetaWindow(float w=0.025) {if (w<0) fCutOnDThetaX=kTRUE; fDThetaWindow = TMath::Abs(w)<1e-5 ? 1e-5:TMath::Abs(w);}
52 void SetPhiShift(float w=0.0045) {fDPhiShift = w;}
53 void SetPhiOverlapCut(float w=0.005) {fPhiOverlapCut = w;}
54 void SetZetaOverlapCut(float w=0.05) {fZetaOverlap = w;}
55 void SetRemoveOverlaps(Bool_t w=kFALSE) {fRemoveOverlaps = w;}
57 void SetDPhiSCut(Float_t c=0.06) {fDPhiSCut = c;}
58 void SetNStdCut(Float_t c=1.0) {fNStdCut = c;}
60 void SetEtaCut(Float_t etaCut) {fEtaMax = TMath::Abs(etaCut); fEtaMin= -fEtaMax;}
61 void SetEtaMin(Float_t etaMin) {fEtaMin = etaMin;}
62 void SetEtaMax(Float_t etaMax) {fEtaMax = etaMax;}
63 void SetZVertexMin(Float_t z) {fZVertexMin = z;}
64 void SetZVertexMax(Float_t z) {fZVertexMax = z;}
66 void SetInput(const char *filename);
67 Int_t FindMotherParticle(AliStack* stack, Int_t i);
68 Double_t PtWeight(Double_t pt, Int_t pdgCode);
72 void FillClusterInfo();
75 TList* fOutput; // output list send on output slot 1
78 TObjArray* fHistos; //! histos array
79 Float_t fVtx[3]; //! event vertex
81 // Settings for the reconstruction
82 // tracklet reco settings
83 Float_t fEtaMin; // histos filled only for this eta range
84 Float_t fEtaMax; // histos filled only for this eta range
85 Float_t fZVertexMin; // min Z vtx to process
86 Float_t fZVertexMax; // max Z vtx to process
88 Bool_t fScaleDTBySin2T; // request dTheta scaling by 1/sin^2(theta)
89 Bool_t fCutOnDThetaX; // if true, apart from NStdDev cut apply also the cut on dThetaX
90 Float_t fNStdDev; // cut on weighted distance
91 Float_t fDPhiWindow; // max dPhi
92 Float_t fDThetaWindow; // max dTheta
93 Float_t fDPhiShift; // mean bend
94 Float_t fPhiOverlapCut; // overlaps cut in phi
95 Float_t fZetaOverlap; // overlaps cut in Z
96 Bool_t fRemoveOverlaps; // request overlaps removal
98 Float_t fDPhiSCut; // cut on signal dphiS
99 Float_t fNStdCut; // cut on signal weighted distance
101 AliITSMultReconstructor *fMultReco; //! mult.reco object
102 TTree* fRPTree; //! tree of recpoints
103 AliStack* fStack; //! MC stack
104 AliMCEvent* fMCEvent; //! MC Event
105 Float_t fESDVtx[3]; // ESD vertex
107 Bool_t fDontMerge; // no merging requested
109 TH1F* fhPtPionIn; // Input histogram containing the pion spectra weight
110 TH1F* fhPtKaonIn; // Input histogram containing the kaon spectra weight
111 TH1F* fhPtProtonIn; // Input histogram containing the proton spectra weight
112 TH1F* fhPtK0sIn; // Input histogram containing the K0s spectra weight
113 TH1F* fhPtLambdaIn; // Input histogram containing the Lambda0 spectra weight
115 AliSPDClustTask(const AliSPDClustTask&); // not implemented
116 AliSPDClustTask& operator=(const AliSPDClustTask&); // not implemented
118 ClassDef(AliSPDClustTask, 1);