]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/forward/SPDClustTask/AliSPDClustTask.h
Update adding the K0s and Lambda spectra.
[u/mrichter/AliRoot.git] / PWGPP / forward / SPDClustTask / AliSPDClustTask.h
1 #ifndef ALISPDCLUSTTASK_H
2 #define ALISPDCLUSTTASK_H
3
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 ///////////////////////////////////////////////////////////////////////////
10
11 class TH1F; 
12 class TH2F;
13 class AliESDEvent;
14 class TList;
15
16 class AliMCParticle;
17 class AliITSMultReconstructor;
18 class AliESDTrackCuts;
19
20 #include "../ITS/AliITSsegmentationSPD.h"
21 #include "AliAnalysisTaskSE.h"
22 #include "AliTriggerAnalysis.h" 
23 #include <TMath.h>
24
25 class AliSPDClustTask : public AliAnalysisTaskSE {
26  public:
27   enum {kHTracklets=0,
28         kHPtPion=50,kHPtKaon=51,kHPtProton=52,kHPtK0S=53,kHPtK0L=54,kHPtLambda=55,
29         kHClusters=100,
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
36   //
37   AliSPDClustTask(const char *name = "AliSPDClustTask");
38   virtual ~AliSPDClustTask(); 
39   
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);
46   // RS
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;}
56   //
57   void       SetDPhiSCut(Float_t c=0.06)        {fDPhiSCut = c;}
58   void       SetNStdCut(Float_t c=1.0)          {fNStdCut = c;}
59   //
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;}
65   //
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);
69   //
70  protected:
71   void       InitMultReco();
72   void       FillClusterInfo();
73   //
74  protected:
75   TList*       fOutput;                   // output list send on output slot 1 
76   //
77   Bool_t       fUseMC; 
78   TObjArray*   fHistos;                   //! histos array
79   Float_t      fVtx[3];                   //! event vertex
80   //
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
87   //
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
97   //
98   Float_t      fDPhiSCut;                  // cut on signal dphiS
99   Float_t      fNStdCut;                   // cut on signal weighted distance
100   //
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
106   //
107   Bool_t fDontMerge;                       // no merging requested
108   //
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
114  private:    
115   AliSPDClustTask(const AliSPDClustTask&); // not implemented
116   AliSPDClustTask& operator=(const AliSPDClustTask&); // not implemented 
117   
118   ClassDef(AliSPDClustTask, 1);  
119 };
120
121
122 #endif