]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliHFENonPhotonicElectron.h
14567caaee3b0ebcc048d545fe8e97d7836234db
[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 class AliESDtrackCuts;
22 class AliHFEpid;
23 class AliHFEpidQAmanager;
24 class AliMCEvent;
25 class AliKFVertex;
26 class AliVEvent;
27 class AliVParticle;
28 class AliVTrack;
29 class THnSparse;
30 class TClonesArray;
31 class TList;
32
33 class AliHFENonPhotonicElectron : public TNamed {
34  public:
35
36   typedef enum{
37     kElectronfromconversion = 0,
38     kElectronfromconversionboth = 1,
39     kElectronfrompi0 = 2,
40     kElectronfrompi0both = 3,
41     kElectronfrometa = 4,
42     kElectronfrometaboth = 5,
43     kElectronfromC = 6,
44     kElectronfromB = 7,
45     kElectronfromother = 8,
46     kNoElectron = 9
47   } Source_t;
48
49   typedef enum{
50     kS = 0,
51     kOp = 1
52   } Sign_t;
53
54   AliHFENonPhotonicElectron();
55   AliHFENonPhotonicElectron(const char *name, const Char_t *title);
56   AliHFENonPhotonicElectron &operator=(const AliHFENonPhotonicElectron &ref);
57   virtual ~AliHFENonPhotonicElectron();
58
59   void SetAOD                   (Bool_t isAOD)                  { fIsAOD = isAOD; };
60   void SetMCEvent               (AliMCEvent *mcEvent)           { fMCEvent = mcEvent; };
61   void SetAODArrayMCInfo        (TClonesArray *aodArrayMCInfo) { fAODArrayMCInfo = aodArrayMCInfo; };
62   void SetHFEBackgroundCuts     (AliHFEcuts * const cuts)       { fHFEBackgroundCuts = cuts; };
63
64   AliHFEpid             *GetPIDBackground()             const   { return fPIDBackground; };
65   AliHFEpidQAmanager    *GetPIDBackgroundQAManager()    const   { return fPIDBackgroundQA; };
66
67   void  SetMaxInvMass           (Double_t MaxInvMass)           { fMaxInvMass           = MaxInvMass; };
68   void  SetMaxOpening3D         (Double_t MaxOpening3D)         { fMaxOpening3D         = MaxOpening3D; };
69 //  void  SetMaxOpeningTheta    (Double_t MaxOpeningTheta)      { fMaxOpeningTheta      = MaxOpeningTheta; };
70 //  void  SetMaxOpeningPhi      (Double_t MaxOpeningPhi)        { fMaxOpeningPhi        = MaxOpeningPhi; };
71   void  SetAlgorithmMA          (Bool_t algorithmMA)            { fAlgorithmMA          = algorithmMA; };
72   void  SetMassConstraint       (Bool_t MassConstraint)         { fSetMassConstraint    = MassConstraint; };
73
74   void SelectCategory1Tracks(Bool_t doSelect = kTRUE) { fSelectCategory1tracks = doSelect; }
75   void SelectCategory2Tracks(Bool_t doSelect = kTRUE) { fSelectCategory2tracks = doSelect; }
76
77   TList      *GetListOutput()           const   { return fListOutput; };
78   THnSparseF *GetAssElectronHisto()     const   { return fAssElectron; };
79   THnSparseF *GetIncElectronHisto()     const   { return fIncElectron; };
80   THnSparseF *GetUSignHisto()           const   { return fUSign; };
81   THnSparseF *GetLSignHisto()           const   { return fLSign; };
82 //  THnSparseF *GetUSignAngleHisto() const { return fUSignAngle; };
83 //  THnSparseF *GetLSignAngleHisto() const { return fLSignAngle; };
84
85   void     Init                         ();
86   void     InitRun                      (const AliVEvent *inputEvent, const AliPIDResponse *pidResponse);
87   Int_t    FillPoolAssociatedTracks     (AliVEvent *inputEvent, Int_t binct=-1);
88   Int_t    CountPoolAssociated          (AliVEvent *inputEvent, Int_t binct=-1);
89   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);
90
91   Int_t    FindMother           (Int_t tr, Int_t &indexmother) const;
92
93
94  private:
95   Int_t    GetMotherPDG(Int_t tr, Int_t &motherIndex) const;
96   Int_t    CheckPdg             (Int_t tr) const;
97   Int_t    IsMotherGamma        (Int_t tr) const;
98   Int_t    IsMotherPi0          (Int_t tr) const;
99   Int_t    IsMotherC            (Int_t tr) const;
100   Int_t    IsMotherB            (Int_t tr) const;
101   Int_t    IsMotherEta          (Int_t tr) const;
102   Bool_t MakePairDCA(const AliVTrack *inclusive, const AliVTrack *associated, AliVEvent *vEvent, Bool_t isAOD, Double_t &invMass, Double_t &angle) const;
103   Bool_t MakePairKF(const AliVTrack *inclusive, const AliVTrack *associated, AliKFVertex &primV, Double_t &invMass, Double_t &angle) const;
104   Bool_t FilterCategory1Track(const AliVTrack * const track, Bool_t isAOD, Int_t binct);
105   Bool_t FilterCategory2Track(const AliVTrack * const track, Bool_t isAOD);
106
107   Bool_t                 fIsAOD;                        // Is AOD
108   AliMCEvent            *fMCEvent;                      //! MC event ESD
109   TClonesArray          *fAODArrayMCInfo;               //! MC info particle AOD
110   AliHFEcuts            *fHFEBackgroundCuts;            // HFE background cuts
111   AliHFEpid             *fPIDBackground;                // PID background cuts
112   AliHFEpidQAmanager    *fPIDBackgroundQA;              // QA Manager Background
113   const AliPIDResponse  *fkPIDRespons;                  // PID response
114   Bool_t                 fAlgorithmMA;                  // algorithm MA
115   Double_t               fChi2OverNDFCut;               // Limit chi2
116   Double_t               fMaxDCA;                       // Limit dca
117 //  Double_t             fMaxOpeningTheta;              // Limit opening angle in theta
118 //  Double_t             fMaxOpeningPhi;                // Limit opening angle in phi
119   Double_t               fMaxOpening3D;                 // Limit opening 3D
120   Double_t               fMaxInvMass;                   // Limit invariant mass
121   Bool_t                 fSetMassConstraint;            // Set mass constraint
122   Bool_t     fSelectCategory1tracks;    // Category 1 tracks: Standard track cuts
123   Bool_t     fSelectCategory2tracks;    // Category 2 tracks: tracks below 300 MeV/c
124   TArrayI               *fArraytrack;                   //! list of associated tracks
125   Int_t                  fCounterPoolBackground;        // number of associated electrons
126   Int_t                  fnumberfound;                  // number of inclusive  electrons
127   TList                 *fListOutput;                   // List of histos
128   THnSparseF            *fAssElectron;                  //! centrality, pt, Source MC, P, TPCsignal
129   THnSparseF            *fIncElectron;                  //! centrality, pt, Source MC, P, TPCsignal
130   THnSparseF            *fUSign;                        //! delta phi, c, pt, inv, source
131   THnSparseF            *fLSign;                        //! delta phi, c, pt, inv, source
132   THnSparseF    *fUSmatches;  //! number of matched tracks with oposite sign per inclusive track after inv mass cut
133   THnSparseF    *fLSmatches;  //! number of matched tracks with same sign per inclusive track after inv mass cut
134   TH2F* fHnsigmaITS;  //! Control histogram for ITS pid of category 2 tracks
135 //  THnSparseF          *fUSignAngle;                   //! angle, c, source
136 //  THnSparseF          *fLSignAngle;                   //! angle, c, source
137
138
139   AliHFENonPhotonicElectron(const AliHFENonPhotonicElectron &ref); 
140
141   ClassDef(AliHFENonPhotonicElectron, 1); //!example of analysis
142 };
143
144 #endif