Radius for core energy is set via AliPHOSRecoParam.
authorkharlov <kharlov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 17 May 2008 19:13:18 +0000 (19:13 +0000)
committerkharlov <kharlov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 17 May 2008 19:13:18 +0000 (19:13 +0000)
PHOS/AliPHOSEmcRecPoint.cxx
PHOS/AliPHOSRecoParam.cxx
PHOS/AliPHOSRecoParam.h
PHOS/AliPHOSReconstructor.cxx

index bb22d26..543d60d 100644 (file)
@@ -56,6 +56,7 @@
 #include "AliPHOSGeometry.h"
 #include "AliPHOSDigit.h"
 #include "AliPHOSEmcRecPoint.h"
+#include "AliPHOSReconstructor.h"
  
 ClassImp(AliPHOSEmcRecPoint)
 
@@ -428,7 +429,7 @@ void AliPHOSEmcRecPoint::EvalCoreEnergy(Float_t logWeight, TClonesArray * digits
   // should be less than 2%
 //DP: non-perpendicular incidence??????????????
 
-  Float_t coreRadius = 3 ;
+  Float_t coreRadius = AliPHOSReconstructor::GetRecoParamEmc()->GetEcoreRadius() ;
 
   Float_t x = 0 ;
   Float_t z = 0 ;
index 7877097..1d6981c 100644 (file)
@@ -32,6 +32,7 @@ AliPHOSRecoParam::AliPHOSRecoParam() :
   fMinE(9999),
   fW0(9999),
   fSampleQualityCut(1.),
+  fEcoreRadius(3.),
   fSubtractPedestals(kTRUE),
   fUnfold(kTRUE),
   fDecoderVersion("")
@@ -47,6 +48,7 @@ AliPHOSRecoParam::AliPHOSRecoParam(const AliPHOSRecoParam& ):
   fMinE(9999),
   fW0(9999),
   fSampleQualityCut(1.),
+  fEcoreRadius(3.),
   fSubtractPedestals(kTRUE),
   fUnfold(kTRUE),
   fDecoderVersion("")
@@ -65,6 +67,7 @@ AliPHOSRecoParam& AliPHOSRecoParam::operator = (const AliPHOSRecoParam& recoPara
     fMinE                = recoParam.fMinE;
     fW0                  = recoParam.fW0;
     fSampleQualityCut    = recoParam.fSampleQualityCut ;
+    fEcoreRadius         = recoParam.fEcoreRadius ;
     fSubtractPedestals   = recoParam.fSubtractPedestals;
     fUnfold              = recoParam.fUnfold;
     fDecoderVersion      = recoParam.fDecoderVersion ;
@@ -72,4 +75,3 @@ AliPHOSRecoParam& AliPHOSRecoParam::operator = (const AliPHOSRecoParam& recoPara
 
   return *this;
 }
-
index b74448e..57fa3b1 100644 (file)
@@ -24,7 +24,9 @@ public:
   Float_t GetLocalMaxCut()         const { return fLocMaxCut;            }
   Float_t GetMinE()                const { return fMinE;                 }
   Float_t GetLogWeight()           const { return fW0;                   }
-  Float_t GetSampleQualityCut()    const { return fSampleQualityCut;                   }
+  Float_t GetSampleQualityCut()    const { return fSampleQualityCut;     }
+  Float_t GetEcoreRadius()         const { return fEcoreRadius;          }
+  Bool_t  Ecore2ESD()              const { return fEcore2ESD;            }
   Bool_t  SubtractPedestals()      const { return fSubtractPedestals;    }
   Bool_t  ToUnfold()               const { return fUnfold;               }
   const char* DecoderVersion()     const { return fDecoderVersion.Data();}
@@ -33,23 +35,27 @@ public:
   void SetLocalMaxCut(Float_t cut)                { fLocMaxCut          =cut;     }
   void SetMinE(Float_t minE)                      { fMinE               =minE;    }
   void SetLogWeight(Float_t w)                    { fW0                 =w;       }
-  void SetSampleQualityCut(Float_t qu)            { fSampleQualityCut   =qu;       }
+  void SetSampleQualityCut(Float_t qu)            { fSampleQualityCut   =qu;      }
+  void SetEcoreRadius(Float_t rCore)              { fEcoreRadius        =rCore;   }
+  void SetEcore2ESD(Bool_t ecore)                 { fEcore2ESD          =ecore;   }
   void SetSubtractPedestals(Bool_t subtract)      { fSubtractPedestals  =subtract;} 
   void SetDecoderVersion(const char* version="v1"){fDecoderVersion      =version ;}
   void SetUnfolding(Bool_t toUnfold=kFALSE)       {fUnfold              =toUnfold;}
 
 protected:
 
-  Float_t fClusteringThreshold;
-  Float_t fLocMaxCut;
-  Float_t fMinE;
-  Float_t fW0;
-  Float_t fSampleQualityCut;
-  Bool_t  fSubtractPedestals;
-  Bool_t  fUnfold;
-  TString fDecoderVersion ;
-
-  ClassDef(AliPHOSRecoParam,3)
+  Float_t fClusteringThreshold; // Min.digit energy to start a new cluster, in GeV
+  Float_t fLocMaxCut;           // Min.energy difference between two local maxima, in GeV
+  Float_t fMinE;                // Min.E in the digits list associated with rec.point, in GeV
+  Float_t fW0;                  // Log.weight to evaluate a local coordinate of rec.point
+  Float_t fSampleQualityCut;    // Cut on pusle shape fit quality
+  Float_t fEcoreRadius;         // Radius within which the core energy is calculated, in cm
+  Bool_t  fEcore2ESD;           // true if Ecore is stored in ESD instead of Etot
+  Bool_t  fSubtractPedestals;   // true if pedestal should be subtracted (in non-ZS)
+  Bool_t  fUnfold;              // true if overlapped clusters should be unfolded
+  TString fDecoderVersion ;     // AliPHOSRawDecoder version
+
+  ClassDef(AliPHOSRecoParam,4)
 };
 
 #endif
index 8cd835e..8792ceb 100644 (file)
@@ -288,10 +288,16 @@ void AliPHOSReconstructor::FillESD(TTree* digitsTree, TTree* clustersTree,
     Int_t  primMult  = 0;
     Int_t *primList =  emcRP->GetPrimaries(primMult);
 
+    Float_t energy;
+    if (fgkRecoParamEmc->Ecore2ESD())
+      energy = emcRP->GetCoreEnergy();
+    else
+      energy = rp->Energy();
+
     // fills the ESDCaloCluster
     ec->SetClusterType(AliESDCaloCluster::kPHOSCluster);
     ec->SetPosition(xyz);                       //rec.point position in MARS
-    ec->SetE(rp->Energy());                     //total particle energy
+    ec->SetE(energy);                           //total or core particle energy
     ec->SetClusterDisp(emcRP->GetDispersion()); //cluster dispersion
     ec->SetPid(rp->GetPID()) ;                  //array of particle identification
     ec->SetM02(emcRP->GetM2x()) ;               //second moment M2x