Changes for #86407 commit in STEER and port to Release AliESDTZERO with pile-up analysis
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Sep 2011 20:30:44 +0000 (20:30 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Sep 2011 20:30:44 +0000 (20:30 +0000)
STEER/ESD/AliESDTZERO.cxx
STEER/ESD/AliESDTZERO.h
T0/AliT0Reconstructor.cxx
T0/AliT0Reconstructor.h

index 8dc8633..1a3bc37 100644 (file)
@@ -37,7 +37,8 @@ AliESDTZERO::AliESDTZERO() :
   fPileup(kFALSE),
   fSattelite(kFALSE),
   fMultC(0),
-  fMultA(0)
+  fMultA(0),
+  fBackground(0)
 
 {
   for(int i = 0;i<24;i++) {
@@ -61,7 +62,8 @@ AliESDTZERO::AliESDTZERO(const AliESDTZERO &tzero ) :
   fPileup(tzero.fPileup),
   fSattelite(tzero.fSattelite),
   fMultC(tzero.fMultC),
-  fMultA(tzero.fMultA)
+  fMultA(tzero.fMultA),
+  fBackground(tzero.fBackground)
 {
   // copy constuctor
   for(int i = 0;i<3;i++) fT0TOF[i] = tzero.fT0TOF[i];
@@ -87,6 +89,7 @@ AliESDTZERO& AliESDTZERO::operator=(const AliESDTZERO& tzero){
     fT0timeStart = tzero.fT0timeStart;
     fPileup = tzero.fPileup;
     fSattelite = tzero.fSattelite;
+    fBackground = tzero.fBackground;
     fMultC = tzero.fMultC;
     fMultA = tzero.fMultA;
     fT0trig = tzero.fT0trig;
index 23b1586..9507ba7 100644 (file)
@@ -58,29 +58,44 @@ public:
   void SetMultA(Float_t mult) {fMultA = mult;}
   Float_t GetMultC()       const {return fMultC;}
   Float_t GetMultA()       const {return fMultA;}
-  
+
+  void SetBackgroundFlag(Bool_t back = false) {fBackground = back;}
+  void SetPileupFlag(Bool_t back = false) {fPileup  = back;}
+  void SetSatelliteFlag(Bool_t sat = false) { fSattelite = sat;}
+  Bool_t GetBackgroundFlag() {return fBackground;}
+  Bool_t GetPileupFlag() {return fPileup;}
+  Bool_t GetSatellite() {return fSattelite;}
+
+  void SetPileupTime (Int_t hit, Float_t time) { fPileupTime[hit] = time;}
+  Float_t GetPileupTime(Int_t hit) {return fPileupTime[hit];}
+
+
   void    Reset();
   void    Print(const Option_t *opt=0) const;
 
+
 private:
 
   Float_t      fT0clock;     // backward compatibility
-  Double32_t   fT0TOF[3];     // interaction time in ns ( A&C, A, C)
-  Double32_t   fT0zVertex;       // vertex z position estimated by the T0
+  Double32_t   fT0TOF[3];     // interaction time in ps ( A&C, A, C)
+  Double32_t   fT0zVertex;       // vertex z position estimated by the T0, cm
   Double32_t   fT0timeStart;     // interaction time estimated by the T0
   Int_t        fT0trig;            // T0 trigger signals
   Double32_t   fT0time[24];      // best TOF on each T0 PMT
   Double32_t   fT0amplitude[24]; // number of particles(MIPs) on each T0 PMT
-  Float_t fTimeFull[24][5];    // array's TDC no-correction ;centred  around 0
-  Float_t fOrA[5];  //hardware OrA centred around 0
-  Float_t fOrC[5];  //hardware OrC centred around 0
-  Float_t fTVDC[5]; //hardware TVDC centred around 0
+  Float_t fTimeFull[24][5];    // array's TDC no-correction ;centred  around 0, ns
+  Float_t fOrA[5];  //hardware OrA centred around 0, ns
+  Float_t fOrC[5];  //hardware OrC centred around 0, ns
+  Float_t fTVDC[5]; //hardware TVDC centred around 0, ns
   Bool_t fPileup;   // pile-up flag
   Bool_t fSattelite; //sattelite flag
   Float_t fMultC; // multiplicity on the C side
   Float_t fMultA; // multiplicity on the A side
-  ClassDef(AliESDTZERO,5)
+  Bool_t fBackground; //sattelite flag
+  Float_t fPileupTime[6];
+
+  ClassDef(AliESDTZERO,6)
 };
 
 
index 1ef056d..a71ae30 100644 (file)
@@ -505,6 +505,7 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
       
       for (Int_t iHit=0; iHit<5; iHit++) 
        {
+         timefull = -9999; 
          tvdc = ora = orc = -9999;
          if(allData[50][iHit]>0) 
            tvdc = (Float_t(allData[50][iHit]) - meanTVDC) * channelWidth* 0.001; 
@@ -529,7 +530,7 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
          for (Int_t i0=12; i0<24; i0++) {
            timefull = -9999; 
            if(allData[i0+45][iHit]>1) {
-             timefull = (Float_t(allData[i0+45][iHit])-fTime0vertex[i0])* channelWidth* 0.001;
+             timefull = (Float_t(allData[i0+45][iHit]) - fTime0vertex[i0] - timeDelayCFD[i0])* channelWidth* 0.001;
            }
            //  if(allData[i0+45][iHit]>1)  printf("i0 %d iHit %d data %d fTime0vertex %f timefull %f \n",i0, iHit, allData[i0+45][iHit], fTime0vertex[i0], timefull);
            frecpoints->SetTimeFull(i0, iHit, timefull) ;
@@ -666,8 +667,16 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
   
   AliDebug(1,Form("T0: SPDshift %f Vertex %f (T0A+T0C)/2 %f #channels T0signal %f ns OrA %f ns OrC %f T0trig %i\n",shift, zPosition, timeStart, timeClock[0], timeClock[1], timeClock[2], trig));
 
+  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  // background flags
+  Bool_t background = BackgroundFlag();
+  fESDTZERO->SetBackgroundFlag(background);
+  Bool_t pileup =  PileupFlag();
+  fESDTZERO->SetPileupFlag(pileup);
+  Bool_t sat  = SatelliteFlag();
+  fESDTZERO->SetSatelliteFlag(sat);
   
-
+  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   if (pESD) {
     
     AliESDfriend *fr = (AliESDfriend*)pESD->FindListObject("AliESDfriend");
@@ -695,7 +704,63 @@ void AliT0Reconstructor::Reconstruct(AliRawReader* rawReader, TTree*recTree) con
 
 } // vertex in 3 sigma
 
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ //____________________________________________________________
+  
+Bool_t AliT0Reconstructor::PileupFlag() const
+{
+  //
+  Bool_t pileup = false;
+  Float_t orA[5], orC[5],tvdc[5];
+  for (Int_t ih=0; ih<5; ih++) 
+    {
+      tvdc[ih] =  fESDTZERO->GetTVDC(ih);
+      
+     if(  tvdc[0] !=0 &&  tvdc[0]>-10 && tvdc[0]< 10 )
+       if(ih>0 && tvdc[ih]>20 )        pileup = true; 
+     if(tvdc[0] >20 || tvdc[0] <-20) pileup =true;
+     
+    }
+
+
+  return pileup;
+
+}
+
+ //____________________________________________________________
+  
+Bool_t AliT0Reconstructor::BackgroundFlag() const
+{
+  Bool_t background = false;
+
+  Float_t orA = fESDTZERO->GetOrA(0);
+  Float_t orC = fESDTZERO->GetOrC(0);
+  Float_t tvdc =  fESDTZERO->GetTVDC(0);
 
+  if ( (orA > -5 && orA <5) && (orC > -5 && orC <5) && (tvdc < -5 || tvdc > 5)) {
+    background = true;
+    //   printf(" orA %f orC %f tvdc %f\n", orA, orC, tvdc);
+  } 
+  return background;
+
+
+}
+
+
+ //____________________________________________________________
+  
+Bool_t  AliT0Reconstructor::SatelliteFlag() const
+{
+
+  Bool_t satellite = false;
+  for (Int_t i0=0; i0<24; i0++) {
+    Float_t timefull =  fESDTZERO -> GetTimeFull(i0,0);
+    if( timefull < -1.5 && timefull > -5) satellite=true;
+  }
+       
+  return satellite;
+
+}
 
 
 
index 530f924..03a9ca6 100644 (file)
@@ -32,7 +32,12 @@ class AliT0Reconstructor: public AliReconstructor {
   virtual Bool_t   HasDigitConversion() const {return kFALSE;}
   static const AliT0RecoParam* GetRecoParam()
     { return dynamic_cast<const AliT0RecoParam*>(AliReconstructor::GetRecoParam(11)); } // getting RecoParam obj
-   
+
+  //!!!!!!!!!!!!!!!!!!!!!!!!!!
+  Bool_t  PileupFlag() const;
+  Bool_t  BackgroundFlag() const;
+  Bool_t  SatelliteFlag() const;
+  //!!!!!!!!!!!!!!!!!!!!!!!
  
  protected:
   Float_t             fdZonA;             // Zideal - Zreal side A