]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliHFENonPhotonicElectron.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFENonPhotonicElectron.h
1 #ifndef ALIHFENONPHOTONICELECTRON_H
2 #define ALIHFENONPHOTONICELECTRON_H
3
4  /************************************************************************************
5   *                                                                                     *
6   *     Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.  *
7   *     See cxx source for full Copyright notice                                        *
8   *                                                                                     *
9   *                                                                                     *
10   *                                                                                     *
11   *     Task for the Selection of Non-photonic Electron study                           *
12   *                                                                                     *
13   *                     Author: R.Bailhache, C.A.Schmidt                                *
14   *                                                                                     *
15   ************************************************************************************/
16
17 #ifndef ROOT_TNamed
18 #include <TNamed.h>
19 #endif
20
21 #ifndef ROOT_TArrayD
22 #include <TArrayD.h>
23 #endif
24
25 class AliESDtrackCuts;
26 class AliHFEpid;
27 class AliHFEpidQAmanager;
28 class AliMCEvent;
29 class AliKFVertex;
30 class AliVEvent;
31 class AliVParticle;
32 class AliVTrack;
33 class THnSparse;
34 class TClonesArray;
35 class TList;
36
37 class AliHFENonPhotonicElectron : public TNamed {
38  public:
39
40   typedef enum{
41     kElectronfromconversion = 0,
42     kElectronfromconversionboth = 1,
43     kElectronfrompi0 = 2,
44     kElectronfrompi0both = 3,
45     kElectronfrometa = 4,
46     kElectronfrometaboth = 5,
47     kElectronfromomega = 6,
48     kElectronfromomegaboth = 7,
49     kElectronfromC = 8,
50     kElectronfromB = 9,
51     kElectronfromother = 10,
52     kNoElectron = 11
53   } Source_t;
54
55   typedef enum{
56     kS = 0,
57     kOp = 1
58   } Sign_t;
59
60   AliHFENonPhotonicElectron();
61   AliHFENonPhotonicElectron(const char *name, const Char_t *title);
62   AliHFENonPhotonicElectron &operator=(const AliHFENonPhotonicElectron &ref);
63   virtual ~AliHFENonPhotonicElectron();
64
65   void SetAOD                   (Bool_t isAOD)                  { fIsAOD = isAOD; };
66   void SetMCEvent               (AliMCEvent *mcEvent);
67   void SetAODArrayMCInfo        (TClonesArray *aodArrayMCInfo);
68   void SetHFEBackgroundCuts     (AliHFEcuts * const cuts)       { fHFEBackgroundCuts = cuts; };
69   void SetWithWeights(Int_t levelBack);
70
71   AliHFEpid             *GetPIDBackground()             const   { return fPIDBackground; };
72   AliHFEpidQAmanager    *GetPIDBackgroundQAManager()    const   { return fPIDBackgroundQA; };
73   Int_t GetLevelBack()                                  const   { return fLevelBack; };
74
75   void  SetMaxInvMass           (Double_t MaxInvMass)           { fMaxInvMass           = MaxInvMass; };
76   void  SetMaxOpening3D         (Double_t MaxOpening3D)         { fMaxOpening3D         = MaxOpening3D; };
77 //  void  SetMaxOpeningTheta    (Double_t MaxOpeningTheta)      { fMaxOpeningTheta      = MaxOpeningTheta; };
78 //  void  SetMaxOpeningPhi      (Double_t MaxOpeningPhi)        { fMaxOpeningPhi        = MaxOpeningPhi; };
79   void  SetStudyRadius          (Bool_t studyRadius)            { fStudyRadius          = studyRadius; };
80   void  SetAlgorithmMA          (Bool_t algorithmMA)            { fAlgorithmMA          = algorithmMA; };
81   void  SetMassConstraint       (Bool_t MassConstraint)         { fSetMassConstraint    = MassConstraint; };
82   void  SetITSMeanShift         (Double_t meanshift)            { fITSmeanShift = meanshift; }
83   void  SetITSnSigmaHigh        (Double_t nSigmaHigh)           { fITSnSigmaHigh = nSigmaHigh; }
84   void  SetITSnSigmaLow         (Double_t nSigmaLow)            { fITSnSigmaLow = nSigmaLow; }
85   void  SetminPt             (Double_t minpt)                   { fminPt = minpt; }
86   void  SetEtaDalitzWeightFactor(Double_t etaDalitzWeightFactor){ fEtaDalitzWeightFactor = etaDalitzWeightFactor;}
87
88   void SelectCategory1Tracks(Bool_t doSelect = kTRUE)           { fSelectCategory1tracks = doSelect; }
89   void SelectCategory2Tracks(Bool_t doSelect = kTRUE)           { fSelectCategory2tracks = doSelect; }
90
91   void SetAnaPairGen(Bool_t setAna = kTRUE, Int_t nGen = 2)     { fAnaPairGen = setAna; fNumberofGenerations = nGen;};
92   void SetNPairGenerations(Int_t nGen)                          { fNumberofGenerations = nGen;};
93   void SetDisplayMCStack(Bool_t setDisplay = kTRUE)             { fDisplayMCStack = setDisplay;};
94
95   TList      *GetListOutput()           const   { return fListOutput; };
96   THnSparseF *GetAssElectronHisto()     const   { return fAssElectron; };
97   THnSparseF *GetIncElectronHisto()     const   { return fIncElectron; };
98   THnSparseF *GetUSignHisto()           const   { return fUSign; };
99   THnSparseF *GetLSignHisto()           const   { return fLSign; };
100 //  THnSparseF *GetUSignAngleHisto() const { return fUSignAngle; };
101 //  THnSparseF *GetLSignAngleHisto() const { return fLSignAngle; };
102
103   void     Init                         ();
104   void     InitRun                      (const AliVEvent *inputEvent, const AliPIDResponse *pidResponse);
105   Int_t    FillPoolAssociatedTracks     (AliVEvent *inputEvent, Int_t binct=-1);
106   Int_t    CountPoolAssociated          (AliVEvent *inputEvent, Int_t binct=-1);
107   Int_t    LookAtNonHFE                 (Int_t iTrack1, AliVTrack *track1, AliVEvent *vEvent, Double_t weight=1., Int_t binct=-1, Double_t deltaphi=-1, Int_t source=-1, Int_t indexmother=-1,Int_t mcQAsource=-1);
108
109   Int_t    FindMother           (Int_t tr, Int_t &indexmother) const;
110
111   void SetPtBinning(const TArrayD &binning) { fPtBinning = binning; }
112   void SetPtBinning(Int_t nbins, const Double_t *const binning) { fPtBinning.Set(nbins+1, binning); }
113   void SetEtaBinning(const TArrayD &binning) { fEtaBinning = binning; }
114   void SetEtaBinning(Int_t nbins, const Double_t *const binning) { fEtaBinning.Set(nbins+1, binning); }
115   void SetInvMassBinning(const TArrayD &binning) { fInvMassBinning = binning; }
116   void SetInvMassBinning(Int_t nbins, const Double_t *const binning) { fInvMassBinning.Set(nbins+1, binning); }
117
118
119  private:
120   void     FillMotherArray(Int_t tr, int index, Int_t a[], int NumberofGenerations);
121   Int_t    FindGeneration(Int_t a[], Int_t b[], int NumberofGenerations); 
122   Int_t    GetMotherPDG(Int_t tr, Int_t &motherIndex) const;
123   Int_t    CheckPdg             (Int_t tr) const;
124   Double_t Radius               (Int_t tr) const;
125   Int_t    IsMotherGamma        (Int_t tr) const;
126   Int_t    IsMotherPi0          (Int_t tr) const;
127   Int_t    IsMotherC            (Int_t tr) const;
128   Int_t    IsMotherB            (Int_t tr) const;
129   Int_t    IsMotherEta          (Int_t tr) const;
130   Int_t    IsMotherOmega        (Int_t tr) const;
131   Bool_t MakePairDCA(const AliVTrack *inclusive, const AliVTrack *associated, AliVEvent *vEvent, Bool_t isAOD, Double_t &invMass, Double_t &angle) const;
132   Bool_t MakePairKF(const AliVTrack *inclusive, const AliVTrack *associated, AliKFVertex &primV, Double_t &invMass, Double_t &angle) const;
133   Bool_t FilterCategory1Track(const AliVTrack * const track, Bool_t isAOD, Int_t binct);
134   Bool_t FilterCategory2Track(const AliVTrack * const track, Bool_t isAOD);
135
136   Bool_t                    fIsAOD;                         // Is AOD
137   AliMCEvent                *fMCEvent;                      //! MC event ESD
138   TClonesArray              *fAODArrayMCInfo;               //! MC info particle AOD
139   Int_t                     fLevelBack;                     // Level Background
140   AliHFEcuts                *fHFEBackgroundCuts;            // HFE background cuts
141   AliHFEpid                 *fPIDBackground;                // PID background cuts
142   AliHFEpidQAmanager        *fPIDBackgroundQA;              // QA Manager Background
143   const AliPIDResponse      *fkPIDRespons;                  // PID response
144   TArrayD                   fPtBinning;                     // pt binning
145   TArrayD                   fEtaBinning;                    // eta binning
146   TArrayD                   fInvMassBinning;                // Inv mass binning
147   Bool_t                    fStudyRadius;                   // Study radius
148   Bool_t                    fAlgorithmMA;                   // algorithm MA
149   Double_t                  fChi2OverNDFCut;                // Limit chi2
150   Double_t                  fMaxDCA;                        // Limit dca
151 //  Double_t                fMaxOpeningTheta;               // Limit opening angle in theta
152 //  Double_t                fMaxOpeningPhi;                 // Limit opening angle in phi
153   Double_t                  fMaxOpening3D;                  // Limit opening 3D
154   Double_t                  fMaxInvMass;                    // Limit invariant mass
155   Bool_t                    fSetMassConstraint;             // Set mass constraint
156   Bool_t                    fSelectCategory1tracks;         // Category 1 tracks: Standard track cuts
157   Bool_t                    fSelectCategory2tracks;         // Category 2 tracks: tracks below 300 MeV/c
158   Double_t                  fITSmeanShift;                  // Shift of the mean in the ITS
159   Double_t                  fITSnSigmaHigh;                 // ITS n Sigma electron cut high (>0)
160   Double_t                  fITSnSigmaLow;                  // ITS n Sigma electron cut low (<0)
161   Double_t                  fminPt;                         // min pT cut for the associated leg
162   Double_t                  fEtaDalitzWeightFactor;         // Relative modification for the weighting factor for electrons from Eta Dalitz decays (default = 1);
163   TArrayI                   *fArraytrack;                   //! list of associated tracks
164   Int_t                     fCounterPoolBackground;         // number of associated electrons
165   Int_t                     fnumberfound;                   // number of inclusive  electrons
166   TList                     *fListOutput;                   // List of histos
167   THnSparseF                *fAssElectron;                  //! centrality, pt, Source MC, P, TPCsignal
168   THnSparseF                *fIncElectron;                  //! centrality, pt, Source MC, P, TPCsignal
169   THnSparseF                *fUSign;                        //! delta phi, c, pt, inv, source
170   THnSparseF                *fLSign;                        //! delta phi, c, pt, inv, source
171   THnSparseF                *fUSmatches;                    //! number of matched tracks with oposite sign per inclusive track after inv mass cut
172   THnSparseF                *fLSmatches;                    //! number of matched tracks with same sign per inclusive track after inv mass cut
173   TH2F                      *fHnsigmaITS;                    //! Control histogram for ITS pid of category 2 tracks
174   TH2F                      *fWeightsSource;                 //! Control histo for sources for weights  
175
176   THnSparseF                *fIncElectronRadius;            //! For fakes
177   THnSparseF                *fRecElectronRadius;            //! For fakes                    
178 //  THnSparseF              *fUSignAngle;                   //! angle, c, source
179 //  THnSparseF              *fLSignAngle;                   //! angle, c, source
180
181   Bool_t                    fAnaPairGen;                     // switch on the analysis of the pair generation (switch for performance)
182   Int_t                     fNumberofGenerations;            // number of generations stored in pair container variable nGen
183   Bool_t                    fDisplayMCStack;                 // display MC stack for true likesign pairs (usually misidentification), for debugging
184
185   AliHFENonPhotonicElectron(const AliHFENonPhotonicElectron &ref); 
186
187   ClassDef(AliHFENonPhotonicElectron, 5); //!example of analysis
188 };
189
190 #endif