1 #ifndef ALIANALYSISTASKSEJPSITOELE_H
\r
2 #define ALIANALYSISTASKSEJPSITOELE_H
\r
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
\r
4 * See cxx source for full Copyright notice */
\r
6 //*************************************************************************
\r
7 // Class AliAnalysisTaskSEJPSItoEle
\r
8 // AliAnalysisTaskSE class to select
\r
9 // J/psi -> e+e- candidates only and save them
\r
10 // into a specific stand-alone AOD file
\r
11 // Author: C.Di Giglio, carmelo.digiglio@ba.infn.it
\r
12 //*************************************************************************
\r
14 #include "TClonesArray.h"
\r
20 #include "AliAnalysisTaskSE.h"
\r
21 #include "AliAODEvent.h"
\r
22 #include "AliAnalysisManager.h"
\r
23 #include "AliAnalysisVertexingHF.h"
\r
24 #include "AliPID.h" //************
\r
25 #include "AliAODPid.h"
\r
26 #include "AliExternalTrackParam.h"//***************
\r
28 class AliAnalysisTaskSEJPSItoEle : public AliAnalysisTaskSE
\r
32 AliAnalysisTaskSEJPSItoEle();
\r
33 AliAnalysisTaskSEJPSItoEle(const char *name);
\r
34 virtual ~AliAnalysisTaskSEJPSItoEle();
\r
36 virtual void UserCreateOutputObjects();
\r
37 virtual void Init();
\r
38 virtual void LocalInit() {Init();}
\r
39 virtual void UserExec(Option_t *option);
\r
40 virtual void Terminate(Option_t *option);
\r
42 void SetCutsJPSI(const Double_t cutsJPSI[9]);
\r
43 void SetPtCuts(const Double_t ptcuts[2]);
\r
44 void SetAODMCInfo(Bool_t OkMCInfo) { fOkAODMC = OkMCInfo;}
\r
45 void ReadAODMCInfo(AliAODEvent* aodEv, const TClonesArray* inArray);
\r
49 Double_t GetExpectedSignal(const Float_t mom,
\r
50 AliPID::EParticleType n=AliPID::kKaon) const {
\r
52 Double_t mass=AliPID::ParticleMass(n);
\r
53 Double_t betaGamma = mom/mass;
\r
54 Double_t bb = AliExternalTrackParam::BetheBlochAleph(betaGamma,0.0283086,2.63394e+01,5.04114e-11,2.12543,4.88663);
\r
55 return bb*50.; //bb*fMIP;
\r
58 Double_t GetExpectedSigma(const Float_t mom, const Int_t nPoints,
\r
59 AliPID::EParticleType n=AliPID::kKaon) const {
\r
61 return GetExpectedSignal(mom,n)*0.07*sqrt(1. + 0./nPoints);
\r
63 return GetExpectedSignal(mom,n)*0.07;
\r
66 Float_t GetNumberOfSigmas(const Float_t mom, const Float_t dEdx,
\r
67 const Int_t nPoints,
\r
68 AliPID::EParticleType n=AliPID::kKaon) const {
\r
70 Double_t bethe=GetExpectedSignal(mom,n);
\r
71 Double_t sigma=GetExpectedSigma(mom,nPoints,n);
\r
72 return (dEdx-bethe)/sigma;
\r
79 AliAnalysisTaskSEJPSItoEle(const AliAnalysisTaskSEJPSItoEle &source);
\r
80 AliAnalysisTaskSEJPSItoEle& operator=(const AliAnalysisTaskSEJPSItoEle& source);
\r
82 TList *fOutput; //! list send on output slot 0
\r
85 TH1F *fhDecayTimeMCjpsifromB; //! Pseudo-proper decay time distribution used as template for JPSIs from B
\r
86 TH1F *fhDecayTime; //! Pseudo-proper decay time distribution
\r
87 TH1F *fhDecayTimeOut; //! Pseudo-proper decay time distribution (stand-alone AOD)
\r
88 TH1F *fhInvMass; //! Invariant mass distribution
\r
90 TH1F *fhD0; //! Impact parameter distribution
\r
91 TH1F *fhD0D0; //! Product of impact parameters distributions
\r
92 TH1F *fhCosThetaStar; //! Cosine of decay angle distribution
\r
93 TH1F *fhCosThetaPointing; //! Cosine of pointing angle distribution
\r
94 TH1F *fhDCA; //! Distance of closest approach
\r
95 TH2F *fhCtsVsD0D0; //! Cos theta star Vs. D0D0 distribution
\r
97 //like sign pairs histograms
\r
98 TH1F *fHistMassLS; //! Invariant mass distribution
\r
99 TH1F *fHistCtsLS; //! Cosine of decay angle distribution
\r
100 TH1F *fHistCtsLSpos; //! Cosine of decay angle distribution (++ pairs)
\r
101 TH1F *fHistCtsLSneg; //! Cosine of decay angle distribution (-- pairs)
\r
102 TH1F *fHistCPtaLS; //! Cosine of pointing angle distribution
\r
103 TH1F *fHistd0d0LS; //! Product of impact parameters distributions
\r
104 TH1F *fHistDCALS; //! Distance of closest approach
\r
105 AliAnalysisVertexingHF *fVHF; //! Vertexer heavy flavour (used to pass the cuts)
\r
108 //Int_t totJPSIout;
\r
110 //like sign spectrum normalization
\r
111 Int_t fTotPosPairs; //
\r
112 Int_t fTotNegPairs; //
\r
113 Double_t fLsNormalization; // Like sign normalization factor
\r
115 //flags for analysis
\r
116 Bool_t fOkAODMC; // Flag to read AOD monte carlo information
\r
117 Bool_t fOkLikeSign; // Flag to select like sign candidates analysis
\r
120 Double_t fCuts[9]; // cuts for N-tuple values selection
\r
121 Double_t fPtCuts[2]; // Max and min pt of the candidates
\r
123 TClonesArray *fVerticesHFTClArr; // Array of heavy flavor vertices to be replicated in stand-alone AOD
\r
124 TClonesArray *fJpsiToEleTClArr; // Array of J/psi->e+e- candidates to be replicated in stand-alone AOD
\r
125 TClonesArray *fLikeSignTClArr; // Array of like sign candidates to be replicated in stand-alone AOD
\r
126 TClonesArray *fTracksTClArr; // Array of tracks belonging to J/psi->e+e- candidates to be replicated in stand-alone AOD
\r
127 AliAODEvent *fOrigAOD; // original AOD event
\r
128 AliAODEvent *fNewAOD; // new AOD event with only JPSItoEle candidates stored
\r
130 ClassDef(AliAnalysisTaskSEJPSItoEle,1); // AliAnalysisTaskSE for the reconstruction of heavy-flavour decay candidates
\r