1 #ifndef ALIHFENONPHOTONICELECTRON_H
2 #define ALIHFENONPHOTONICELECTRON_H
4 /************************************************************************************
6 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice *
11 * Task for the Selection of Non-photonic Electron study *
13 * Author: R.Bailhache, C.A.Schmidt *
15 ************************************************************************************/
25 class AliESDtrackCuts;
27 class AliHFEpidQAmanager;
37 class AliHFENonPhotonicElectron : public TNamed {
41 kElectronfromconversion = 0,
42 kElectronfromconversionboth = 1,
44 kElectronfrompi0both = 3,
46 kElectronfrometaboth = 5,
47 kElectronfromomega = 6,
48 kElectronfromomegaboth = 7,
51 kElectronfromother = 10,
60 AliHFENonPhotonicElectron();
61 AliHFENonPhotonicElectron(const char *name, const Char_t *title);
62 AliHFENonPhotonicElectron &operator=(const AliHFENonPhotonicElectron &ref);
63 virtual ~AliHFENonPhotonicElectron();
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);
71 AliHFEpid *GetPIDBackground() const { return fPIDBackground; };
72 AliHFEpidQAmanager *GetPIDBackgroundQAManager() const { return fPIDBackgroundQA; };
73 Int_t GetLevelBack() const { return fLevelBack; };
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;}
88 void SelectCategory1Tracks(Bool_t doSelect = kTRUE) { fSelectCategory1tracks = doSelect; }
89 void SelectCategory2Tracks(Bool_t doSelect = kTRUE) { fSelectCategory2tracks = doSelect; }
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;};
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; };
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);
109 Int_t FindMother (Int_t tr, Int_t &indexmother) const;
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); }
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);
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
176 THnSparseF *fIncElectronRadius; //! For fakes
177 THnSparseF *fRecElectronRadius; //! For fakes
178 // THnSparseF *fUSignAngle; //! angle, c, source
179 // THnSparseF *fLSignAngle; //! angle, c, source
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
185 AliHFENonPhotonicElectron(const AliHFENonPhotonicElectron &ref);
187 ClassDef(AliHFENonPhotonicElectron, 5); //!example of analysis