]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/AliGammaReader.h
Corrected coding violations
[u/mrichter/AliRoot.git] / PWG4 / AliGammaReader.h
index 08fcb66470e1d0bf0b9a459935390ec74c25f805..b8d6f15f01afed43c5ed498a00a58fec5f6e4663 100644 (file)
  */
 
 //_________________________________________________________________________
-// Base class for reading data in order to do prompt gamma correlations 
+// Base class for reading data: MonteCarlo, ESD or AOD, of PHOS EMCAL and 
+// Central Barrel Tracking detectors.
+// Not all MC particles/tracks/clusters are kept, some kinematical restrictions are done.
+// Mother class of : AliGammaDataReader: Fills ESD data in 3 TClonesArrays (PHOS, EMCAL, CTS)
+//                 : AliGammaMCReader: Fills Kinematics data in 3 TClonesArrays (PHOS, EMCAL, CTS)
+//                 : AliGammaMCDataReader: Fills ESD data in 3 TClonesArrays (PHOS, EMCAL, CTS) 
+//                             and MC data in other 3 TClonesArray
 //*-- Author: Gustavo Conesa (INFN-LNF)
 
 // --- ROOT system ---
-#include <TParticle.h> 
-#include <TFormula.h>
-#include <TClonesArray.h> 
-#include "AliStack.h"
 #include "TObject.h" 
-class AliESD ; 
 
-class TH2F ; 
+class TClonesArray ; 
+class TFormula ;
+class TParticle ; 
+class Riostream ;
+//--- AliRoot system ---
+
+class AliStack ;
+class AliESDEvent ; 
+class AliLog ;
 
 class AliGammaReader : public TObject {
 
@@ -52,42 +60,51 @@ public:
     kChargedUnknown=321
   };
 
-  enum datatype_t {kData, kMC, kMCData};
+  enum PhotonStatusType {
+    kPromptPhoton=2,
+    kFragmentPhoton=3,
+    kPi0DecayPhoton=4, 
+    kEtaDecayPhoton=5, 
+    kOtherDecayPhoton=6,
+    kUnknown=7
+  };
+
+  enum Datatype {kData, kMC, kMCData};
   
   void InitParameters();
 
-  Int_t GetDataType(){ return fDataType ; }
+  Int_t GetDataType() const { return fDataType ; }
   void SetDataType(Int_t data ){fDataType = data ; }
 
-  virtual Float_t   GetCTSEtaCut() const {return fCTSEtaCut ; }
-  virtual Float_t   GetEMCALEtaCut() const {return fEMCALEtaCut ; }
-  virtual Float_t   GetPHOSEtaCut() const {return fPHOSEtaCut ; }
+  virtual Float_t  GetCTSEtaCut() const {return fCTSEtaCut ; }
+  virtual Float_t  GetEMCALEtaCut() const {return fEMCALEtaCut ; }
+  virtual Float_t  GetPHOSEtaCut() const {return fPHOSEtaCut ; }
   virtual Float_t  GetPhiEMCALCut(Int_t i) { return  fPhiEMCALCut[i]  ; }
   virtual Float_t  GetPhiPHOSCut(Int_t i) { return  fPhiPHOSCut[i]  ; }
   virtual Float_t  GetNeutralPtCut()    {  return fNeutralPtCut  ; }
   virtual Float_t  GetChargedPtCut()  {  return fChargedPtCut  ; }
 
-  virtual Float_t  GetEMCALIPDistance()  {  return fEMCALIPDistance ; }
-  virtual Float_t  GetPHOSIPDistance()  {  return fPHOSIPDistance ; }
-  virtual Float_t  GetEMCALMinAngle()  {  return fEMCALMinAngle ; }
-  virtual Float_t  GetPHOSMinAngle()  {  return fPHOSMinAngle ; }
+  virtual Float_t  GetEMCALIPDistance()  const {  return fEMCALIPDistance ; }
+  virtual Float_t  GetPHOSIPDistance()  const {  return fPHOSIPDistance ; }
+  virtual Float_t  GetEMCALMinAngle()  const {  return fEMCALMinAngle ; }
+  virtual Float_t  GetPHOSMinAngle()  const {  return fPHOSMinAngle ; }
 
   virtual Bool_t   IsEMCALPIDOn() const {return fEMCALPID ; }
   virtual Bool_t   IsPHOSPIDOn() const {return fPHOSPID ; }
-  virtual Float_t  GetEMCALPhotonWeight() { return  fEMCALPhotonWeight  ; }
-  virtual Float_t  GetEMCALPi0Weight()    {  return fEMCALPi0Weight  ; }
-  virtual Float_t  GetEMCALElectronWeight() { return  fEMCALElectronWeight  ; }
-  virtual Float_t  GetEMCALChargeWeight()    {  return fEMCALChargeWeight  ; }
-  virtual Float_t  GetEMCALNeutralWeight()    {  return fEMCALNeutralWeight  ; }
-  virtual Float_t  GetPHOSPhotonWeight()  {  return fPHOSPhotonWeight  ; }
-  virtual Float_t  GetPHOSPi0Weight()  {  return fPHOSPi0Weight  ; }
-  virtual Float_t  GetPHOSElectronWeight()  {  return fPHOSElectronWeight  ; }
-  virtual Float_t  GetPHOSChargeWeight()  {  return fPHOSChargeWeight  ; }
-  virtual Float_t  GetPHOSNeutralWeight()  {  return fPHOSNeutralWeight  ; }
-
-  virtual Bool_t  IsPHOSPIDWeightFormulaOn()  {  return fPHOSWeightFormula  ; } 
-  virtual TFormula * GetPHOSPhotonWeightFormula()    {  return fPHOSPhotonWeightFormula  ; } 
-  virtual TFormula * GetPHOSPi0WeightFormula()   {  return fPHOSPi0WeightFormula  ; }
+  virtual Float_t  GetEMCALPhotonWeight() const  { return  fEMCALPhotonWeight  ; }
+  virtual Float_t  GetEMCALPi0Weight() const     {  return fEMCALPi0Weight  ; }
+  virtual Float_t  GetEMCALElectronWeight() const  { return  fEMCALElectronWeight  ; }
+  virtual Float_t  GetEMCALChargeWeight() const     {  return fEMCALChargeWeight  ; }
+  virtual Float_t  GetEMCALNeutralWeight() const     {  return fEMCALNeutralWeight  ; }
+  virtual Float_t  GetPHOSPhotonWeight() const   {  return fPHOSPhotonWeight  ; }
+  virtual Float_t  GetPHOSPi0Weight() const   {  return fPHOSPi0Weight  ; }
+  virtual Float_t  GetPHOSElectronWeight() const   {  return fPHOSElectronWeight  ; }
+  virtual Float_t  GetPHOSChargeWeight() const   {  return fPHOSChargeWeight  ; }
+  virtual Float_t  GetPHOSNeutralWeight() const   {  return fPHOSNeutralWeight  ; }
+
+  virtual Bool_t  IsPHOSPIDWeightFormulaOn() const   {  return fPHOSWeightFormula  ; } 
+  virtual TFormula * GetPHOSPhotonWeightFormula() const     {  return fPHOSPhotonWeightFormula  ; } 
+  virtual TFormula * GetPHOSPi0WeightFormula() const    {  return fPHOSPi0WeightFormula  ; }
 
   virtual void Print(const Option_t * opt)const;
   
@@ -123,24 +140,42 @@ public:
   virtual void SetPHOSPhotonWeightFormula(TFormula * photon)    {  fPHOSPhotonWeightFormula  = photon; } 
   virtual void SetPHOSPi0WeightFormula(TFormula * pi0)   {  fPHOSPi0WeightFormula  = pi0; }
 
-  virtual void CreateParticleList(TObject* data, TObject * data2, 
-                                 TClonesArray * plCh, TClonesArray * plEMCAL, TClonesArray * plPHOS,     
-                                 TClonesArray * parton, TClonesArray * plPrimEMCAL, TClonesArray * plPrimPHOS) {;}
+  virtual Bool_t IsEMCALOn() const  { return fSwitchOnEMCAL ; }
+  virtual Bool_t IsPHOSOn() const  { return fSwitchOnPHOS ; }
+  virtual Bool_t IsCTSOn() const  { return fSwitchOnCTS ; }
+  
+  virtual void SwitchOnEMCAL(Bool_t sw) {fSwitchOnEMCAL = sw ; }
+  virtual void SwitchOnPHOS(Bool_t sw) {fSwitchOnPHOS = sw ; }
+  virtual void SwitchOnCTS(Bool_t sw) {fSwitchOnCTS = sw ; }
+
+  virtual void CreateParticleList(TObject* , TObject * , 
+                                 TClonesArray * , TClonesArray * , TClonesArray *,  
+                                 TClonesArray * , TClonesArray * , TClonesArray * ) {;}
+  
  protected:
-  Int_t        fDataType ;
+  
+  Int_t        fDataType ; //Select MC:Kinematics, Data:ESD/AOD, MCData:Both
+  
+  Bool_t     fSwitchOnEMCAL ; //Do not consider EMCAL neutral particles/clusters
+  Bool_t     fSwitchOnPHOS ;//Do not consider PHOS neutral particles/clusters
+  Bool_t     fSwitchOnCTS ;//Do not consider tracks/ charged particles
+
+  //Kinematical cuts
   Float_t      fCTSEtaCut ;//CTS  pseudorapidity acceptance
   Float_t      fEMCALEtaCut ;//EMCAL pseudorapidity acceptance
   Float_t      fPHOSEtaCut ;//PHOS pseudorapidity acceptance
   Float_t      fPhiEMCALCut[2]; //EMCAL phi acceptance 
   Float_t      fPhiPHOSCut[2];  //PHOS phi acceptance
-  Float_t      fNeutralPtCut; //
-  Float_t      fChargedPtCut;  // 
+  Float_t      fNeutralPtCut; //pT Threshold on neutral particles
+  Float_t      fChargedPtCut;  // pT  Threshold on charged particles
 
+  //Overlapping 
   Float_t      fEMCALIPDistance; //Calorimeter IP distance.
   Float_t      fPHOSIPDistance; //Calorimeter IP distance
   Float_t      fEMCALMinAngle; //Gamma decay minimum aperture angle for overlapping.
   Float_t      fPHOSMinAngle; //Gamma decay minimum aperture angle for overlapping.
 
+  //PID
   Bool_t       fEMCALPID ;//Fill EMCAL particle lists with particles with corresponding pid
   Bool_t       fPHOSPID;  //Fill PHOS particle lists with particles with corresponding pid
   Float_t      fEMCALPhotonWeight; //Bayesian PID weight for photons in EMCAL