\r
//______________________________________________________________________________\r
AliAnaOmegaToPi0Gamma::AliAnaOmegaToPi0Gamma() : AliAnaPartCorrBaseClass(),\r
-fInputAODGamma(0),fInputAODPi0(0), fInputAODGammaName(""),\r
-fEventsList(0),fNVtxZBin(1), fNCentBin(1), fNRpBin(1), fNBadChDistBin(3), fNpid(3),\r
-fNmaxMixEv(4), fVtxZCut(0), fCent(0), fRp(0), \r
-fPi0Mass(0.13498),fPi0MassWindow(0.015),fPi0OverOmegaPtCut(0.8),\r
-fGammaOverOmegaPtCut(0.3),\r
+fInputAODPi0(0), fInputAODGammaName(""),\r
+fEventsList(0),fNVtxZBin(0), fNCentBin(0), fNRpBin(0), fNBadChDistBin(0), fNpid(0),\r
+fNmaxMixEv(0), fVtxZCut(0), fCent(0), fRp(0), \r
+fPi0Mass(0),fPi0MassWindow(0),fPi0OverOmegaPtCut(0),\r
+fGammaOverOmegaPtCut(0),\r
fhEtalon(0),\r
fRealOmega0(0), fMixAOmega0(0),\r
fMixBOmega0(0), fMixCOmega0(0),\r
fhOmegaPriPt(0)\r
{\r
//Default Ctor\r
+ InitParameters();\r
}\r
\r
//______________________________________________________________________________\r
AliAnaOmegaToPi0Gamma::AliAnaOmegaToPi0Gamma(const AliAnaOmegaToPi0Gamma & ex) : AliAnaPartCorrBaseClass(ex),\r
-fInputAODGamma(new TClonesArray (*ex.fInputAODGamma)), \r
fInputAODPi0(new TClonesArray (*ex.fInputAODPi0)),\r
fInputAODGammaName(ex.fInputAODGammaName),\r
fEventsList(ex.fEventsList), \r
\r
if(this == &ex)return *this;\r
((AliAnaPartCorrBaseClass *)this)->operator=(ex);\r
- fInputAODGamma = new TClonesArray(*ex.fInputAODGamma);\r
fInputAODPi0 = new TClonesArray(*ex.fInputAODPi0);\r
-// fInputAODGamma=ex.fInputAODGamma;\r
-// fInputAODPi0=ex.fInputAODPi0;\r
fInputAODGammaName = ex.fInputAODGammaName;\r
fEventsList = ex.fEventsList;\r
\r
\r
}\r
\r
+\r
//______________________________________________________________________________\r
AliAnaOmegaToPi0Gamma::~AliAnaOmegaToPi0Gamma() {\r
\r
//dtor\r
- if(fInputAODGamma){\r
- fInputAODGamma->Clear();\r
- delete fInputAODGamma;\r
- }\r
\r
if(fInputAODPi0){\r
fInputAODPi0->Clear();\r
{\r
//Init parameters when first called the analysis\r
//Set default parameters\r
+ fInputAODGammaName="PhotonsDetector"; \r
+ fNVtxZBin=1; \r
+ fNCentBin=1; \r
+ fNRpBin=1; \r
+ fNBadChDistBin=3; \r
+ fNpid=9; \r
+ fNmaxMixEv=8; \r
+ \r
+ fPi0Mass=0.1348; \r
+ fPi0MassWindow=0.015; \r
+ fPi0OverOmegaPtCut=0.8; \r
+ fGammaOverOmegaPtCut=0.2; \r
+}\r
+\r
+\r
+//______________________________________________________________________________\r
+TList * AliAnaOmegaToPi0Gamma::GetCreateOutputObjects()\r
+{\r
+ //\r
fVtxZCut = new Double_t [fNVtxZBin];\r
for(Int_t i=0;i<fNVtxZBin;i++) fVtxZCut[i]=10*(i+1);\r
\r
\r
fRp=new Double_t[fNRpBin];\r
for(int i = 0;i<fNRpBin;i++)fRp[i]=0;\r
-\r
-}\r
-\r
-\r
-//______________________________________________________________________________\r
-TList * AliAnaOmegaToPi0Gamma::GetCreateOutputObjects()\r
-{\r
- InitParameters();\r
-\r
+ //\r
Int_t nptbins = GetHistoPtBins();\r
Float_t ptmax = GetHistoPtMax();\r
Float_t ptmin = GetHistoPtMin();\r
}\r
}\r
}\r
-\r
\r
TList * outputContainer = new TList() ; \r
outputContainer->SetName(GetName());\r
\r
if(ivtxzbin==-1) return; \r
curEventBin = ivtxzbin*fNCentBin*fNRpBin + icentbin*fNRpBin + irpbin;\r
-\r
- fInputAODGamma = GetAODBranch(fInputAODGammaName); //photon array\r
- //fInputAODGamma = (TClonesArray *) GetReader()->GetOutputEvent()->FindListObject(fInputAODGammaName); //photon array\r
- Int_t nphotons = fInputAODGamma->GetEntries();\r
+ TClonesArray *aodGamma = (TClonesArray*) GetAODBranch(fInputAODGammaName); //photon array\r
+// TClonesArray *aodGamma = (TClonesArray *) GetReader()->GetOutputEvent()->FindListObject(fInputAODGammaName); //photon array\r
+ Int_t nphotons =0;\r
+ if(aodGamma) nphotons= aodGamma->GetEntries(); \r
+ else return;\r
\r
fInputAODPi0 = (TClonesArray*)GetInputAODBranch(); //pi0 array\r
- Int_t npi0s = fInputAODPi0 ->GetEntries();\r
- \r
+ Int_t npi0s = 0;\r
+ if(fInputAODPi0) npi0s= fInputAODPi0 ->GetEntries();\r
+ else return;\r
+\r
if(nphotons<3 || npi0s<1)return; //for pi0, eta and omega->pi0+gamma->3gamma reconstruction\r
\r
//reconstruction of omega(782)->pi0+gamma->3gamma\r
AliAODPWG4Particle * photon2 =0;\r
for(Int_t d1=0;d1<nphotons;d1++){\r
for(Int_t d2=0;d2<nphotons;d2++){\r
- AliAODPWG4Particle * dp1 = (AliAODPWG4Particle*) (fInputAODGamma->At(d1));\r
- AliAODPWG4Particle * dp2 = (AliAODPWG4Particle*) (fInputAODGamma->At(d2));\r
+ AliAODPWG4Particle * dp1 = (AliAODPWG4Particle*) (aodGamma->At(d1));\r
+ AliAODPWG4Particle * dp2 = (AliAODPWG4Particle*) (aodGamma->At(d2));\r
Int_t dlab1=dp1->GetCaloLabel(0);\r
Int_t dlab2=dp2->GetCaloLabel(0);\r
if(dlab1==lab1 && dlab2==lab2){\r
\r
//loop the pi0 with third gamma\r
for(Int_t j=0;j<nphotons;j++){\r
- AliAODPWG4Particle *photon3 = (AliAODPWG4Particle*) (fInputAODGamma->At(j));\r
+ AliAODPWG4Particle *photon3 = (AliAODPWG4Particle*) (aodGamma->At(j));\r
TLorentzVector dph3(photon3->Px(),photon3->Py(),photon3->Pz(),photon3->E());\r
Int_t lab3=photon3->GetCaloLabel(0);\r
Double_t pi0gammapt=(vpi0+dph3).Pt();\r
//\r
if(GetDebug() >0)printf("MixB: (r1_event1+r2_event2)+r3_event2 \n");\r
for(Int_t i=0;i<nphotons;i++){\r
- AliAODPWG4Particle *ph1 = (AliAODPWG4Particle*) (fInputAODGamma->At(i)); \r
+ AliAODPWG4Particle *ph1 = (AliAODPWG4Particle*) (aodGamma->At(i)); \r
TLorentzVector vph1(ph1->Px(),ph1->Py(),ph1->Pz(),ph1->E());\r
\r
Int_t nMixed = fEventsList[curEventBin]->GetSize();\r
\r
\r
//event buffer \r
- TClonesArray *currentEvent = new TClonesArray(*fInputAODGamma);\r
+ TClonesArray *currentEvent = new TClonesArray(*aodGamma);\r
if(currentEvent->GetEntriesFast()>0){\r
fEventsList[curEventBin]->AddFirst(currentEvent) ;\r
currentEvent=0 ; \r
delete currentEvent ;\r
currentEvent=0 ;\r
}\r
+ aodGamma->Clear();\r
}\r
\r
//______________________________________________________________________________\r
AliAnaOmegaToPi0Gamma() ; // default ctor
AliAnaOmegaToPi0Gamma(const char *name) ; // default ctor
- AliAnaOmegaToPi0Gamma(const AliAnaOmegaToPi0Gamma & g) ; // cpy ctor
- AliAnaOmegaToPi0Gamma & operator = (const AliAnaOmegaToPi0Gamma & api0) ;//cpy assignment
+ AliAnaOmegaToPi0Gamma(const AliAnaOmegaToPi0Gamma & ex) ; // cpy ctor
virtual ~AliAnaOmegaToPi0Gamma() ;//virtual dtor
-
+
+ private:
+ AliAnaOmegaToPi0Gamma & operator = (const AliAnaOmegaToPi0Gamma & ex) ;//cpy assignment
+
+ public:
TList * GetCreateOutputObjects();
void Print(const Option_t * opt) const;
void Terminate(TList * outList);
TString GetInputAODPhotonName() const {return fInputAODGammaName;}
- void SetInputAODPhotonName(TString name) {fInputAODGammaName=name;}
+ void SetInputAODPhotonName(TString name) { fInputAODGammaName = name; }
Bool_t IsBadRun(Int_t /*iRun*/) const {return kFALSE;} //Tests if this run bad according to private list
void SetNEventsMixed(Int_t nevents) { fNmaxMixEv=nevents;} //events to be mixed
private:
- TClonesArray * fInputAODGamma; //!Input AOD gamma array
- TClonesArray * fInputAODPi0; //!Input AOD pi0 array
- TString fInputAODGammaName; //!Input AOD gamma name
- TList ** fEventsList; //!event list for mixing
+ TClonesArray * fInputAODPi0; //Input AOD pi0 array
+ TString fInputAODGammaName; //Input AOD gamma name
+ TList ** fEventsList; //event list for mixing
- Int_t fNVtxZBin; //!Number of vertex z cut
- Int_t fNCentBin; //!Number of centrality cut
- Int_t fNRpBin; //!Number of reaction plane cut
- Int_t fNBadChDistBin; //!Number of bad channel dist cut
- Int_t fNpid; //!Number of PID cut
- Int_t fNmaxMixEv; //!buffer size events to be mixed
+ Int_t fNVtxZBin; //Number of vertex z cut
+ Int_t fNCentBin; //Number of centrality cut
+ Int_t fNRpBin; //Number of reaction plane cut
+ Int_t fNBadChDistBin; //Number of bad channel dist cut
+ Int_t fNpid; //Number of PID cut
+ Int_t fNmaxMixEv; //buffer size events to be mixed
Double_t *fVtxZCut; //![fNVtxZBin] vtertx z cut
Double_t *fCent; //![fNCentBin] centrality cut
Double_t *fRp; //![fNRpBin] reaction plane cut
- Double_t fPi0Mass; //!nominal pi0 mass
- Double_t fPi0MassWindow; //!pi0 mass windows
- Double_t fPi0OverOmegaPtCut; //!pi0 Pt over omega pt cut
- Double_t fGammaOverOmegaPtCut; //!gamma pt over omega pt cut
-
- TH2F * fhEtalon; //!an etalon of 3D histograms
- TH2F **fRealOmega0; //!real omega IVM(asy, pt, m), with Asy_pi0<1
- TH2F **fMixAOmega0; //!mixA omega IVM(asy, pt, m)
- TH2F **fMixBOmega0; //!mixB omega IVM(asy, pt, m)
- TH2F **fMixCOmega0; //!mixC omega IVM(asy, pt, m)
- TH2F **fRealOmega1; //!real omega IVM(asy, pt, m), with Asy_pi0<0.7
- TH2F **fMixAOmega1; //!mixA omega IVM(asy, pt, m)
- TH2F **fMixBOmega1; //!mixB omega IVM(asy, pt, m)
- TH2F **fMixCOmega1; //!mixC omega IVM(asy, pt, m)
- TH2F **fRealOmega2; //!real omega IVM(asy, pt, m), with Asy_pi0<0.8
- TH2F **fMixAOmega2; //!mixA omega IVM(asy, pt, m)
- TH2F **fMixBOmega2; //!mixB omega IVM(asy, pt, m)
- TH2F **fMixCOmega2; //!mixC omega IVM(asy, pt, m)
- TH1F *fhOmegaPriPt; //!MC primary omega pt in 2pi and |y|<0.5
+ Double_t fPi0Mass; //nominal pi0 mass
+ Double_t fPi0MassWindow; //pi0 mass windows
+ Double_t fPi0OverOmegaPtCut; //pi0 Pt over omega pt cut
+ Double_t fGammaOverOmegaPtCut; //gamma pt over omega pt cut
+
+ TH2F * fhEtalon; //an etalon of 3D histograms
+ TH2F **fRealOmega0; //real omega IVM(asy, pt, m), with Asy_pi0<1
+ TH2F **fMixAOmega0; //mixA omega IVM(asy, pt, m)
+ TH2F **fMixBOmega0; //mixB omega IVM(asy, pt, m)
+ TH2F **fMixCOmega0; //mixC omega IVM(asy, pt, m)
+ TH2F **fRealOmega1; //real omega IVM(asy, pt, m), with Asy_pi0<0.7
+ TH2F **fMixAOmega1; //mixA omega IVM(asy, pt, m)
+ TH2F **fMixBOmega1; //mixB omega IVM(asy, pt, m)
+ TH2F **fMixCOmega1; //mixC omega IVM(asy, pt, m)
+ TH2F **fRealOmega2; //real omega IVM(asy, pt, m), with Asy_pi0<0.8
+ TH2F **fMixAOmega2; //mixA omega IVM(asy, pt, m)
+ TH2F **fMixBOmega2; //mixB omega IVM(asy, pt, m)
+ TH2F **fMixCOmega2; //mixC omega IVM(asy, pt, m)
+ TH1F *fhOmegaPriPt; //MC primary omega pt in 2pi and |y|<0.5
ClassDef(AliAnaOmegaToPi0Gamma,2)
} ;