]>
Commit | Line | Data |
---|---|---|
76d0b522 | 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 | ||
1452614c | 21 | #ifndef ROOT_TArrayD |
22 | #include <TArrayD.h> | |
23 | #endif | |
24 | ||
76d0b522 | 25 | class AliESDtrackCuts; |
26 | class AliHFEpid; | |
27 | class AliHFEpidQAmanager; | |
28 | class AliMCEvent; | |
4437a0d2 | 29 | class AliKFVertex; |
76d0b522 | 30 | class AliVEvent; |
31 | class AliVParticle; | |
4437a0d2 | 32 | class AliVTrack; |
76d0b522 | 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, | |
465ff082 | 47 | kElectronfromomega = 6, |
48 | kElectronfromomegaboth = 7, | |
49 | kElectronfromC = 8, | |
50 | kElectronfromB = 9, | |
51 | kElectronfromother = 10, | |
52 | kNoElectron = 11 | |
76d0b522 | 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 | ||
8a9b2231 | 65 | void SetAOD (Bool_t isAOD) { fIsAOD = isAOD; }; |
ff8249bd | 66 | void SetMCEvent (AliMCEvent *mcEvent); |
67 | void SetAODArrayMCInfo (TClonesArray *aodArrayMCInfo); | |
8a9b2231 | 68 | void SetHFEBackgroundCuts (AliHFEcuts * const cuts) { fHFEBackgroundCuts = cuts; }; |
ff8249bd | 69 | void SetWithWeights(Int_t levelBack); |
76d0b522 | 70 | |
8a9b2231 | 71 | AliHFEpid *GetPIDBackground() const { return fPIDBackground; }; |
72 | AliHFEpidQAmanager *GetPIDBackgroundQAManager() const { return fPIDBackgroundQA; }; | |
ff8249bd | 73 | Int_t GetLevelBack() const { return fLevelBack; }; |
76d0b522 | 74 | |
75 | void SetMaxInvMass (Double_t MaxInvMass) { fMaxInvMass = MaxInvMass; }; | |
76 | void SetMaxOpening3D (Double_t MaxOpening3D) { fMaxOpening3D = MaxOpening3D; }; | |
959ea9d8 | 77 | // void SetMaxOpeningTheta (Double_t MaxOpeningTheta) { fMaxOpeningTheta = MaxOpeningTheta; }; |
78 | // void SetMaxOpeningPhi (Double_t MaxOpeningPhi) { fMaxOpeningPhi = MaxOpeningPhi; }; | |
465ff082 | 79 | void SetStudyRadius (Bool_t studyRadius) { fStudyRadius = studyRadius; }; |
76d0b522 | 80 | void SetAlgorithmMA (Bool_t algorithmMA) { fAlgorithmMA = algorithmMA; }; |
81 | void SetMassConstraint (Bool_t MassConstraint) { fSetMassConstraint = MassConstraint; }; | |
7bdde22f | 82 | void SetITSMeanShift (Double_t meanshift) { fITSmeanShift = meanshift; } |
83 | void SetITSnSigmaHigh (Double_t nSigmaHigh) { fITSnSigmaHigh = nSigmaHigh; } | |
84 | void SetITSnSigmaLow (Double_t nSigmaLow) { fITSnSigmaLow = nSigmaLow; } | |
465ff082 | 85 | void SetminPt (Double_t minpt) { fminPt = minpt; } |
86 | void SetEtaDalitzWeightFactor(Double_t etaDalitzWeightFactor){ fEtaDalitzWeightFactor = etaDalitzWeightFactor;} | |
76d0b522 | 87 | |
465ff082 | 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;}; | |
4437a0d2 | 94 | |
8a9b2231 | 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; }; | |
959ea9d8 | 100 | // THnSparseF *GetUSignAngleHisto() const { return fUSignAngle; }; |
101 | // THnSparseF *GetLSignAngleHisto() const { return fLSignAngle; }; | |
76d0b522 | 102 | |
103 | void Init (); | |
8a9b2231 | 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); | |
ff8249bd | 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); |
76d0b522 | 108 | |
39427568 | 109 | Int_t FindMother (Int_t tr, Int_t &indexmother) const; |
76d0b522 | 110 | |
1452614c | 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); } | |
465ff082 | 115 | void SetInvMassBinning(const TArrayD &binning) { fInvMassBinning = binning; } |
116 | void SetInvMassBinning(Int_t nbins, const Double_t *const binning) { fInvMassBinning.Set(nbins+1, binning); } | |
1452614c | 117 | |
76d0b522 | 118 | |
119 | private: | |
465ff082 | 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); | |
39427568 | 122 | Int_t GetMotherPDG(Int_t tr, Int_t &motherIndex) const; |
123 | Int_t CheckPdg (Int_t tr) const; | |
ff8249bd | 124 | Double_t Radius (Int_t tr) const; |
39427568 | 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; | |
465ff082 | 130 | Int_t IsMotherOmega (Int_t tr) const; |
4437a0d2 | 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 | ||
1452614c | 136 | Bool_t fIsAOD; // Is AOD |
137 | AliMCEvent *fMCEvent; //! MC event ESD | |
138 | TClonesArray *fAODArrayMCInfo; //! MC info particle AOD | |
ff8249bd | 139 | Int_t fLevelBack; // Level Background |
1452614c | 140 | AliHFEcuts *fHFEBackgroundCuts; // HFE background cuts |
ff8249bd | 141 | AliHFEpid *fPIDBackground; // PID background cuts |
1452614c | 142 | AliHFEpidQAmanager *fPIDBackgroundQA; // QA Manager Background |
143 | const AliPIDResponse *fkPIDRespons; // PID response | |
144 | TArrayD fPtBinning; // pt binning | |
145 | TArrayD fEtaBinning; // eta binning | |
465ff082 | 146 | TArrayD fInvMassBinning; // Inv mass binning |
147 | Bool_t fStudyRadius; // Study radius | |
1452614c | 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 | |
7bdde22f | 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 | |
465ff082 | 162 | Double_t fEtaDalitzWeightFactor; // Relative modification for the weighting factor for electrons from Eta Dalitz decays (default = 1); |
1452614c | 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 | |
ff8249bd | 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 | |
1452614c | 178 | // THnSparseF *fUSignAngle; //! angle, c, source |
179 | // THnSparseF *fLSignAngle; //! angle, c, source | |
76d0b522 | 180 | |
465ff082 | 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 | |
76d0b522 | 184 | |
8a9b2231 | 185 | AliHFENonPhotonicElectron(const AliHFENonPhotonicElectron &ref); |
76d0b522 | 186 | |
465ff082 | 187 | ClassDef(AliHFENonPhotonicElectron, 5); //!example of analysis |
76d0b522 | 188 | }; |
189 | ||
190 | #endif |