// Analysis for Tagged Photons\r
// Prepares all necessary histograms for calculation of \r
// the yield of pi0 decay photon in calorimeter:\r
+// Marks photons which makes pi0 with some other and
+// fill invariant mass distributions for estimate background below pi0
+// peak so that estimate proportion of fake pairs.
+// Fills as well controll MC histograms with clasification of the photon origin
+// and check of the ptoportion of truly tagged photons.
// \r
//\r
//*-- Dmitry Blau \r
//////////////////////////////////////////////////////////////////////////////\r
\r
-#include <TCanvas.h>\r
#include <TH1.h>\r
#include <TH2.h>\r
#include <TH3.h>\r
-#include <TROOT.h>\r
-#include <TLegend.h> \r
-#include <TNtuple.h>\r
-#include <TVector3.h> \r
#include <TFile.h>\r
+#include <TROOT.h>\r
\r
#include "AliAnalysisTaskTaggedPhotons.h" \r
#include "AliAnalysisManager.h"\r
+#include "AliESDVertex.h"\r
#include "AliESDEvent.h" \r
#include "AliESDCaloCluster.h" \r
#include "AliAODPWG4Particle.h"\r
+#include "AliAnalysisManager.h"\r
#include "AliLog.h"\r
-#include "AliESDVertex.h"\r
#include "AliPHOSGeoUtils.h"\r
#include "TGeoManager.h"\r
#include "AliMCAnalysisUtils.h"
#include "AliMCEventHandler.h"\r
-#include "AliAnalysisManager.h"\r
#include "AliMCEvent.h"\r
#include "AliStack.h"\r
\r
//______________________________________________________________________________\r
AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons() : AliAnalysisTaskSE(),
- fgeom(0x0),fStack(0x0),fDebug(0),fPHOS(1),
+ fgeom(0x0),fStack(0x0),fPHOS(1),
fPhotonId(1.0),fMinEnergyCut(0.4),
- fPi0Mean_p0(0.1377),fPi0Mean_p1(-0.002566),fPi0Mean_p2(0.001216),fPi0Mean_p3(-0.0001256),
- fPi0Sigma_p0(0.004508),fPi0Sigma_p1(0.005497),fPi0Sigma_p2(0.00000006),
+ fPi0MeanP0(0.1377),fPi0MeanP1(-0.002566),fPi0MeanP2(0.001216),fPi0MeanP3(-0.0001256),
+ fPi0SigmaP0(0.004508),fPi0SigmaP1(0.005497),fPi0SigmaP2(0.00000006),
fZmax(0.),fZmin(0.),fPhimax(0.),fPhimin(0.),
fOutputList(0x0),fEventList(0x0),
fhRecAll(0x0),fhRecAllArea1(0x0),fhRecAllArea2(0x0),fhRecAllArea3(0x0),
//______________________________________________________________________________\r
AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const char *name) : \r
AliAnalysisTaskSE(name),\r
- fgeom(0x0),fStack(0x0),fDebug(0),fPHOS(1),
+ fgeom(0x0),fStack(0x0),fPHOS(1),
fPhotonId(1.0),fMinEnergyCut(0.4),
- fPi0Mean_p0(0.1377),fPi0Mean_p1(-0.002566),fPi0Mean_p2(0.001216),fPi0Mean_p3(-0.0001256),
- fPi0Sigma_p0(0.004508),fPi0Sigma_p1(0.005497),fPi0Sigma_p2(0.00000006),
+ fPi0MeanP0(0.1377),fPi0MeanP1(-0.002566),fPi0MeanP2(0.001216),fPi0MeanP3(-0.0001256),
+ fPi0SigmaP0(0.004508),fPi0SigmaP1(0.005497),fPi0SigmaP2(0.00000006),
fZmax(0.),fZmin(0.),fPhimax(0.),fPhimin(0.),
fOutputList(0x0),fEventList(0x0),
fhRecAll(0x0),fhRecAllArea1(0x0),fhRecAllArea2(0x0),fhRecAllArea3(0x0),
//____________________________________________________________________________\r
AliAnalysisTaskTaggedPhotons::AliAnalysisTaskTaggedPhotons(const AliAnalysisTaskTaggedPhotons& ap) :\r
AliAnalysisTaskSE(ap.GetName()), \r
- fgeom(0x0),fStack(0x0),fDebug(ap.fDebug),fPHOS(ap.fPHOS),
+ fgeom(0x0),fStack(0x0),fPHOS(ap.fPHOS),
fPhotonId(ap.fPhotonId),fMinEnergyCut(ap.fMinEnergyCut),
- fPi0Mean_p0(ap.fPi0Mean_p0),fPi0Mean_p1(ap.fPi0Mean_p1),fPi0Mean_p2(ap.fPi0Mean_p2),fPi0Mean_p3(ap.fPi0Mean_p3),
- fPi0Sigma_p0(ap.fPi0Sigma_p0),fPi0Sigma_p1(ap.fPi0Sigma_p1),fPi0Sigma_p2(ap.fPi0Sigma_p2),
+ fPi0MeanP0(ap.fPi0MeanP0),fPi0MeanP1(ap.fPi0MeanP1),fPi0MeanP2(ap.fPi0MeanP2),fPi0MeanP3(ap.fPi0MeanP3),
+ fPi0SigmaP0(ap.fPi0SigmaP0),fPi0SigmaP1(ap.fPi0SigmaP1),fPi0SigmaP2(ap.fPi0SigmaP2),
fZmax(ap.fZmax),fZmin(ap.fZmin),fPhimax(ap.fPhimax),fPhimin(ap.fPhimin),
fOutputList(0x0),fEventList(0x0),
fhRecAll(0x0),fhRecAllArea1(0x0),fhRecAllArea2(0x0),fhRecAllArea3(0x0),
\r
}\r
//______________________________________________________________________________\r
-Bool_t AliAnalysisTaskTaggedPhotons::IsInPi0Band(Double_t m, Double_t pt)\r
+Bool_t AliAnalysisTaskTaggedPhotons::IsInPi0Band(Double_t m, Double_t pt)const\r
{\r
//Parameterization of the pi0 peak region\r
- Double_t mpi0_mean = fPi0Mean_p0 + fPi0Mean_p1 * pt + fPi0Mean_p2 * pt*pt + fPi0Mean_p3 * pt*pt*pt;\r
- Double_t mpi0_sigma = TMath::Sqrt(fPi0Sigma_p0 * fPi0Sigma_p0 / pt + fPi0Sigma_p1 * fPi0Sigma_p1 + fPi0Sigma_p2 * fPi0Sigma_p2 / pt / pt);\r
+ Double_t mpi0mean = fPi0MeanP0 + fPi0MeanP1 * pt + fPi0MeanP2 * pt*pt + fPi0MeanP3 * pt*pt*pt;\r
+ Double_t mpi0sigma = TMath::Sqrt(fPi0SigmaP0 * fPi0SigmaP0 / pt + fPi0SigmaP1 * fPi0SigmaP1 + fPi0SigmaP2 * fPi0SigmaP2 / pt / pt);\r
\r
- return (m>mpi0_mean-2*mpi0_sigma && m>mpi0_mean+2*mpi0_sigma) ;\r
+ return (m>mpi0mean-2*mpi0sigma && m<mpi0mean+2*mpi0sigma) ;\r
}\r
//______________________________________________________________________________\r
-Bool_t AliAnalysisTaskTaggedPhotons::IsSamePi0(AliAODPWG4Particle *p1, AliAODPWG4Particle *p2){\r
+Bool_t AliAnalysisTaskTaggedPhotons::IsSamePi0(const AliAODPWG4Particle *p1, const AliAODPWG4Particle *p2)const{\r
//Looks through parents and finds if there was commont pi0 among ancestors\r
\r
if(!fStack)\r
return kFALSE ;\r
}\r
//______________________________________________________________________________\r
-Int_t AliAnalysisTaskTaggedPhotons::GetFiducialArea(Float_t * pos){\r
+Int_t AliAnalysisTaskTaggedPhotons::GetFiducialArea(Float_t * pos)const{\r
//calculates in which kind of fiducial area photon hit\r
if(fPHOS){\r
Double_t phi=TMath::ATan2(pos[1],pos[0]) ;\r
* See cxx source for full Copyright notice */\r
//______________________________________________________________________________\r
// Analysis for PHOS Tagged Photons \r
+// marks photons making pi0 with any other photon
+// and calculates necessary corrections for fake pairs and
+// decay partners escaped acceptance. If MC info is present
+// fills set of controll histograms.
//\r
//*-- Dmitry Blau \r
//////////////////////////////////////////////////////////////////////////////\r
\r
-#include <TTree.h> \r
#include "AliAnalysisTaskSE.h" \r
\r
class AliStack ; \r
class AliESDEvent ; \r
//class AliAODEvent ; \r
-class TNtuple ;\r
class TH1D ; \r
class TH1I ; \r
class TH2D ;\r
class TH2F ;\r
class TH3D ;\r
class AliPHOSGeoUtils;\r
-class TFile;\r
class AliAODPWG4Particle;\r
-class AliCaloTrackReader;\r
\r
class AliAnalysisTaskTaggedPhotons : public AliAnalysisTaskSE {\r
\r
\r
//Parameterization of pi0 peak position\r
void SetPi0MeanParameters(Float_t p0, Float_t p1, Float_t p2, Float_t p3)\r
- { fPi0Mean_p0 = p0; fPi0Mean_p1 = p1; fPi0Mean_p2 = p2; fPi0Mean_p3 = p3;}\r
+ { fPi0MeanP0 = p0; fPi0MeanP1 = p1; fPi0MeanP2 = p2; fPi0MeanP3 = p3;}\r
//Parameterization of pi0 peak width \r
- void SetPi0SigmaParameters(Float_t p0, Float_t p1, Float_t p2){ fPi0Sigma_p0 = p0; fPi0Sigma_p1 = p1;fPi0Sigma_p2 = p2; }\r
+ void SetPi0SigmaParameters(Float_t p0, Float_t p1, Float_t p2){ fPi0SigmaP0 = p0; fPi0SigmaP1 = p1;fPi0SigmaP2 = p2; }\r
\r
protected:\r
Float_t GetPhotonId() const { return fPhotonId ; }\r
- Int_t GetFiducialArea(Float_t * pos) ; //what kind of fiducial area hit the photon\r
- Bool_t IsSamePi0(AliAODPWG4Particle *p1, AliAODPWG4Particle *p2); //Check MC genealogy\r
- Bool_t IsInPi0Band(Double_t m, Double_t pt); //Check if invariant mass is within pi0 peak\r
+ Int_t GetFiducialArea(Float_t * pos)const ; //what kind of fiducial area hit the photon\r
+ Bool_t IsSamePi0(const AliAODPWG4Particle *p1, const AliAODPWG4Particle *p2) const; //Check MC genealogy\r
+ Bool_t IsInPi0Band(Double_t m, Double_t pt)const; //Check if invariant mass is within pi0 peak\r
\r
private:\r
\r
AliPHOSGeoUtils *fgeom; //!PHOS/EMCAL geometry\r
AliStack *fStack ; //!Pointer to MC stack\r
- Int_t fDebug ; //Debug flag 1-few prints,2-more, 3-all prints\r
Bool_t fPHOS ; //Choose Calorimeter: PHOS/EMCAL\r
\r
// task parameters\r
Float_t fPhotonId ; // threshold for photon identification (Bayesian)\r
Float_t fMinEnergyCut; // min energy of partner photon\r
- Float_t fPi0Mean_p0; // Parameterization of pi0 mass:\r
- Float_t fPi0Mean_p1; // m_mean_pi0 = p[0] + p[1]*pt + p[2]*pt^2 + p[3]*pt^3\r
- Float_t fPi0Mean_p2; //\r
- Float_t fPi0Mean_p3; //\r
+ Float_t fPi0MeanP0; // Parameterization of pi0 mass:\r
+ Float_t fPi0MeanP1; // m_mean_pi0 = p[0] + p[1]*pt + p[2]*pt^2 + p[3]*pt^3\r
+ Float_t fPi0MeanP2; // m_mean_pi0 = p[0] + p[1]*pt + p[2]*pt^2 + p[3]*pt^3\r
+ Float_t fPi0MeanP3; // m_mean_pi0 = p[0] + p[1]*pt + p[2]*pt^2 + p[3]*pt^3\r
\r
- Float_t fPi0Sigma_p0; // sigma_m_pi0 = sqrt ( p0*p0/x + p1*p1 + p2*p2/x/x)\r
- Float_t fPi0Sigma_p1;\r
- Float_t fPi0Sigma_p2;\r
+ Float_t fPi0SigmaP0; // sigma_m_pi0 = sqrt ( p0*p0/x + p1*p1 + p2*p2/x/x)\r
+ Float_t fPi0SigmaP1;\r // sigma_m_pi0 = sqrt ( p0*p0/x + p1*p1 + p2*p2/x/x)
+ Float_t fPi0SigmaP2;\r // sigma_m_pi0 = sqrt ( p0*p0/x + p1*p1 + p2*p2/x/x)
\r
//Fiducial area parameters\r
- Float_t fZmax ;\r
- Float_t fZmin ;\r
- Float_t fPhimax ;\r
- Float_t fPhimin ;\r
+ Float_t fZmax ; //Rectangular
+ Float_t fZmin ; //area
+ Float_t fPhimax ; //covered by
+ Float_t fPhimin ; //full calorimeter
\r
TList * fOutputList ; //! output data list\r
TList * fEventList ; //! event list for mixed InvMass\r