#100372: Request to port code to allow for event selection from ZDC timing info at...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Feb 2013 19:50:18 +0000 (19:50 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Feb 2013 19:50:18 +0000 (19:50 +0000)
ANALYSIS/AliAnalysisTaskESDfilter.cxx
STEER/AOD/AliAODZDC.cxx
STEER/AOD/AliAODZDC.h
STEER/ESD/AliESDZDC.cxx
STEER/ESD/AliESDZDC.h
ZDC/AliZDCReconstructor.cxx

index c91382c..9e60fc3 100644 (file)
@@ -2061,7 +2061,8 @@ void AliAnalysisTaskESDfilter::ConvertZDC(const AliESDEvent& esd)
        esdZDC->GetImpactParamSideC());
   zdcAOD->SetZDCTDCSum(esdZDC->GetZNTDCSum(0));        
   zdcAOD->SetZDCTDCDiff(esdZDC->GetZNTDCDiff(0));      
-
+  if(esdZDC->IsZNChit()) zdcAOD->SetZNCTDC(esdZDC->GetZDCTDCCorrected(10,0));
+  if(esdZDC->IsZNAhit()) zdcAOD->SetZNATDC(esdZDC->GetZDCTDCCorrected(12,0));
 }
 
 //_______________________________________________________________________________________________________________________________________
index 670e5d4..0f68586 100644 (file)
@@ -39,7 +39,9 @@ AliAODZDC::AliAODZDC() :
   fImpactParamSideA(0),
   fImpactParamSideC(0),
   fZDCTDCSum(0),        
-  fZDCTDCDifference(0)
+  fZDCTDCDifference(0),
+  fZNCTDC(0),
+  fZNATDC(0)
 {
 // Default constructor
   for(Int_t i=0; i<5; i++){
@@ -65,7 +67,9 @@ AliAODZDC::AliAODZDC(const AliAODZDC &zdcAOD) :
   fImpactParamSideA(zdcAOD.fImpactParamSideA),
   fImpactParamSideC(zdcAOD.fImpactParamSideC),
   fZDCTDCSum(zdcAOD.fZDCTDCSum),        
-  fZDCTDCDifference(zdcAOD.fZDCTDCDifference)
+  fZDCTDCDifference(zdcAOD.fZDCTDCDifference),
+  fZNCTDC(zdcAOD.fZNCTDC),
+  fZNATDC(zdcAOD.fZNATDC)
 {
 // Constructor
   for(Int_t i=0; i<5; i++){
@@ -114,6 +118,9 @@ AliAODZDC& AliAODZDC::operator=(const AliAODZDC& zdcAOD)
     //
     fZDCTDCSum = zdcAOD.fZDCTDCSum;    
     fZDCTDCDifference = zdcAOD.fZDCTDCDifference;
+    fZNCTDC = zdcAOD.fZNCTDC;
+    fZNATDC = zdcAOD.fZNATDC;
+
   } 
   return *this;
 }
index 4e575d9..b4a3f4a 100644 (file)
@@ -44,6 +44,9 @@ public:
   virtual Bool_t GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2]);
   virtual Bool_t GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2]);
 
+  virtual Float_t GetZNCTime() const {return fZNCTDC;}
+  virtual Float_t GetZNATime() const {return fZNATDC;}
+
   virtual Float_t GetZDCTimeSum() const {return fZDCTDCSum;}
   virtual Float_t GetZDCTimeDiff() const {return fZDCTDCDifference;}
 
@@ -66,6 +69,9 @@ public:
  
   void  SetZDCTDCSum(Float_t tdc)  {fZDCTDCSum = tdc;}
   void  SetZDCTDCDiff(Float_t tdc) {fZDCTDCDifference = tdc;}
+  
+  void  SetZNCTDC(Float_t tdc) {fZNCTDC = tdc;}
+  void  SetZNATDC(Float_t tdc) {fZNATDC = tdc;}
  
  
 protected:
@@ -93,8 +99,11 @@ protected:
   //
   Float_t   fZDCTDCSum;                   // ZDC TDC sum in ns corrected 4 phase shift
   Float_t   fZDCTDCDifference;    // ZDC TDC diff. in ns corrected 4 phase shift
+  Float_t   fZNCTDC;              // ZNCC TDC sum in ns corrected 4 phase shift        
+  Float_t   fZNATDC;              // ZNA TDC diff. in ns corrected 4 phase shift;     
+
 
-  ClassDef(AliAODZDC,1)
+  ClassDef(AliAODZDC,2)
 };
 
 #endif
index 203e493..80b0592 100644 (file)
@@ -42,7 +42,14 @@ AliESDZDC::AliESDZDC() :
   fImpactParameter(0),
   fImpactParamSideA(0),
   fImpactParamSideC(0),
-  fESDQuality(0)
+  fESDQuality(0),
+  fZNCTDChit(kFALSE),
+  fZNATDChit(kFALSE),
+  fZPCTDChit(kFALSE),
+  fZPATDChit(kFALSE),
+  fZEM1TDChit(kFALSE),
+  fZEM2TDChit(kFALSE)
+
 {
   for(Int_t i=0; i<5; i++){
     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
@@ -77,7 +84,14 @@ AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
   fImpactParameter(zdc.fImpactParameter),
   fImpactParamSideA(zdc.fImpactParamSideA),
   fImpactParamSideC(zdc.fImpactParamSideC),
-  fESDQuality(zdc.fESDQuality)
+  fESDQuality(zdc.fESDQuality),
+  fZNCTDChit(zdc.fZNCTDChit),
+  fZNATDChit(zdc.fZNATDChit),
+  fZPCTDChit(zdc.fZPCTDChit),
+  fZPATDChit(zdc.fZPATDChit),
+  fZEM1TDChit(zdc.fZEM1TDChit),
+  fZEM2TDChit(zdc.fZEM2TDChit)
+
 {
   // copy constructor
   for(Int_t i=0; i<5; i++){
@@ -147,6 +161,13 @@ AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
       }
     }
   } 
+  fZNCTDChit = zdc.fZNCTDChit;
+  fZNATDChit = zdc.fZNATDChit;
+  fZPCTDChit = zdc.fZPCTDChit;
+  fZPATDChit = zdc.fZPATDChit;
+  fZEM1TDChit = zdc.fZEM1TDChit;
+  fZEM2TDChit = zdc.fZEM2TDChit;
   return *this;
 }
 
@@ -198,6 +219,13 @@ void AliESDZDC::Reset()
         fZDCTDCCorrected[i][y] = 0.;
      }
   }
+  fZNCTDChit = kFALSE;
+  fZNATDChit = kFALSE;
+  fZPCTDChit = kFALSE;
+  fZPATDChit = kFALSE;
+  fZEM1TDChit = kFALSE;
+  fZEM2TDChit = kFALSE;
+
 }
 
 //______________________________________________________________________________
index caf19b9..47006e1 100644 (file)
@@ -141,6 +141,20 @@ public:
   void SetZDCTDCCorrected(const Float_t values[32][4]) 
        {for(Int_t k=0; k<32; k++)
                   for(Int_t j=0; j<4; j++) fZDCTDCCorrected[k][j] = values[k][j];}
+  
+  Bool_t IsZNChit() {return fZNCTDChit;}
+  Bool_t IsZNAhit() {return fZNATDChit;}
+  Bool_t IsZPChit() {return fZPCTDChit;}
+  Bool_t IsZPAhit() {return fZPATDChit;}
+  Bool_t IsZEM1hit() {return fZEM1TDChit;}
+  Bool_t IsZEM2hit() {return fZEM2TDChit;}
+  //
+  void SetZNCTDChit(Bool_t isf)  {fZNCTDChit = isf;} 
+  void SetZPCTDChit(Bool_t isf)  {fZNATDChit = isf;} 
+  void SetZNATDChit(Bool_t isf)  {fZPCTDChit = isf;} 
+  void SetZPATDChit(Bool_t isf)  {fZPATDChit = isf;} 
+  void SetZEM1TDChit(Bool_t isf) {fZEM1TDChit = isf;} 
+  void SetZEM2TDChit(Bool_t isf) {fZEM2TDChit = isf;} 
 
   void    Reset();
   void    Print(const Option_t *opt=0) const;
@@ -174,8 +188,14 @@ private:
   UInt_t       fVMEScaler[32];           // counts from VME scaler
   Int_t        fZDCTDCData[32][4];     // ZDC TDC data
   Float_t      fZDCTDCCorrected[32][4];// ZDC TDC data in ns corrected 4 phase shift
+  Bool_t       fZNCTDChit;    // true if ZNC TDC has at least 1 hit
+  Bool_t       fZNATDChit;    // true if ZNA TDC has at least 1 hit
+  Bool_t       fZPCTDChit;    // true if ZPC TDC has at least 1 hit
+  Bool_t       fZPATDChit;    // true if ZPA TDC has at least 1 hit
+  Bool_t       fZEM1TDChit;   // true if ZEM1 TDC has at least 1 hit
+  Bool_t       fZEM2TDChit;   // true if ZEM2 TDC has at least 1 hit
   
-  ClassDef(AliESDZDC,17)
+  ClassDef(AliESDZDC,18)
 };
 
 #endif
index f5db66a..336dce6 100644 (file)
@@ -70,8 +70,7 @@ AliZDCReconstructor:: AliZDCReconstructor() :
   fPedSubMode(0),
   fSignalThreshold(7),
   fMeanPhase(0),
-  fESDZDC(NULL)
-{
+  fESDZDC(NULL){
   // **** Default constructor
 }
 
@@ -763,7 +762,7 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree,
      }
   }
   // Ch. debug
-  printf("\n ------------- EQUALIZATION -------------\n");
+  /*printf("\n ------------- EQUALIZATION -------------\n");
   printf(" ADCZN1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
        equalTowZN1[0],equalTowZN1[1],equalTowZN1[2],equalTowZN1[3],equalTowZN1[4]);
   printf(" ADCZP1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
@@ -772,7 +771,7 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree,
        equalTowZN2[0],equalTowZN2[1],equalTowZN2[2],equalTowZN2[3],equalTowZN2[4]);
   printf(" ADCZP2 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
        equalTowZP2[0],equalTowZP2[1],equalTowZP2[2],equalTowZP2[3],equalTowZP2[4]);
-  printf(" ----------------------------------------\n");
+  printf(" ----------------------------------------\n");*/
   
   //  *** p-A RUN 2013 -> new calibration object
   //      to take into account saturation in ZN PMC
@@ -786,11 +785,11 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree,
        calibSatZNA[2]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] +
        calibSatZNA[3]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0];
 
- // Ch. debug
-  printf("\n ------------- SATURATION CORRECTION -------------\n");
+  // Ch. debug
+  /*printf("\n ------------- SATURATION CORRECTION -------------\n");
   printf(" ZNC PMC %1.2f\n", equalTowZN1[0]);
   printf(" ZNA PMC %1.2f\n", equalTowZN2[0]);
-  printf(" ----------------------------------------\n");
+  printf(" ----------------------------------------\n");*/
   
   // ******    Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!)
   Float_t calibSumZN1[]={0,0}, calibSumZN2[]={0,0}, calibSumZP1[]={0,0}, calibSumZP2[]={0,0};
@@ -1391,10 +1390,17 @@ void AliZDCReconstructor::FillZDCintoESD(TTree *clustersTree, AliESDEvent* esd)
   }    
   
   Int_t tdcValues[32][4] = {{0,}}; 
-  Float_t tdcCorrected[32][4] = {{0.,}};
+  Float_t tdcCorrected[32][4] = {{9999.,}};
   for(Int_t jk=0; jk<32; jk++){
     for(Int_t lk=0; lk<4; lk++){
       tdcValues[jk][lk] = reco.GetZDCTDCData(jk, lk);
+      //
+      if(jk==8 && TMath::Abs(tdcValues[jk][lk])>1e-09)      fESDZDC->SetZEM1TDChit(kTRUE);
+      else if(jk==9 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZEM2TDChit(kTRUE);
+      else if(jk==10 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZNCTDChit(kTRUE);
+      else if(jk==11 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZPCTDChit(kTRUE);
+      else if(jk==12 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZNATDChit(kTRUE);
+      else if(jk==13 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZPATDChit(kTRUE);
       //Ch debug
       //if((jk>=8 && jk<=13 && lk==0) || jk==15) printf(" *** ZDC: tdc%d =  %d = %f ns \n",jk,tdcValues[jk][lk],0.025*tdcValues[jk][lk]);
     }
@@ -1406,12 +1412,14 @@ void AliZDCReconstructor::FillZDCintoESD(TTree *clustersTree, AliESDEvent* esd)
   for(Int_t jk=0; jk<32; jk++){
     for(Int_t lk=0; lk<4; lk++){
       if(tdcValues[jk][lk]!=0.){
-        tdcCorrected[jk][lk] = 0.025*(tdcValues[jk][lk]-tdcValues[15][0])+fMeanPhase;
-        // Sep 2011: TDC ch. from 8 to 13 centered around 0 using OCDB 
-       if(jk>=8 && jk<=13) tdcCorrected[jk][lk] =  tdcCorrected[jk][lk] - tdcOffset[jk-8];
-       //Ch. debug
-       //if(jk>=8 && jk<=13) printf(" *** tdcOffset%d %f  tdcCorr%d %f \n",jk,tdcOffset[jk-8],tdcCorrected[jk][lk]);
-   
+        // Feb2013 _-> TDC correct entry is there ONLY IF tdc has a hit!
+        if(TMath::Abs(tdcValues[jk][lk])>1e-09){
+          tdcCorrected[jk][lk] = 0.025*(tdcValues[jk][lk]-tdcValues[15][0])+fMeanPhase;
+           // Sep 2011: TDC ch. from 8 to 13 centered around 0 using OCDB 
+          if(jk>=8 && jk<=13) tdcCorrected[jk][lk] =  tdcCorrected[jk][lk] - tdcOffset[jk-8];
+          //Ch. debug
+          //if(jk>=8 && jk<=13) printf(" *** tdcOffset%d %f  tdcCorr%d %f \n",jk,tdcOffset[jk-8],tdcCorrected[jk][lk]);
+        }
       }
     }
   }