Improving file handling at digitization time (item related to https://alice.its.cern...
authorcoppedis <oppedisa@alz112xl.(none)>
Wed, 26 Mar 2014 13:57:02 +0000 (14:57 +0100)
committerhristov <Peter.Hristov@cern.ch>
Thu, 27 Mar 2014 15:27:29 +0000 (16:27 +0100)
ZDC/AliZDCDigitizer.cxx
ZDC/AliZDCDigitizer.h

index 14b36a3..56ccb78 100644 (file)
@@ -64,7 +64,8 @@ AliZDCDigitizer::AliZDCDigitizer() :
   fBeamEnergy(0.),
   fBeamType(""),
   fIspASystem(kFALSE),
-  fIsRELDISgen(kFALSE)
+  fIsRELDISgen(kFALSE),
+  fSpectatorData(0)
 {
   // Default constructor    
   for(Int_t i=0; i<2; i++) fADCRes[i]=0.;
@@ -81,7 +82,8 @@ AliZDCDigitizer::AliZDCDigitizer(AliDigitizationInput* digInput):
   fBeamEnergy(0.),
   fBeamType(""),
   fIspASystem(kFALSE),
-  fIsRELDISgen(kFALSE)
+  fIsRELDISgen(kFALSE),
+  fSpectatorData(NULL)
 {
   // Get calibration data
   if(fIsCalibration!=0) printf("\n\t AliZDCDigitizer -> Creating calibration data (pedestals)\n");
@@ -95,7 +97,10 @@ AliZDCDigitizer::AliZDCDigitizer(AliDigitizationInput* digInput):
 AliZDCDigitizer::~AliZDCDigitizer()
 {
 // Destructor
-// Not implemented
+   if(fSpectatorData!=NULL){
+      fSpectatorData->Close();
+      delete fSpectatorData;
+   } 
 }
 
 
@@ -110,7 +115,8 @@ AliZDCDigitizer::AliZDCDigitizer(const AliZDCDigitizer &digitizer):
   fBeamEnergy(digitizer.fBeamEnergy),
   fBeamType(digitizer.fBeamType),
   fIspASystem(digitizer.fIspASystem),
-  fIsRELDISgen(digitizer.fIsRELDISgen)
+  fIsRELDISgen(digitizer.fIsRELDISgen),
+  fSpectatorData(digitizer.fSpectatorData)
 {
   // Copy constructor
 
@@ -178,7 +184,7 @@ Bool_t AliZDCDigitizer::Init()
      AliInfo(" AliZDCDigitizer -> Manually setting beam type to A-A\n");
   }    
   printf("\n\t  AliZDCDigitizer ->  beam type %s  - beam energy = %f GeV\n", fBeamType.Data(), fBeamEnergy);
-  if(fSpectators2Track) printf("\t  AliZDCDigitizer ->  spectator signal added at digit level\n");
+  if(fSpectators2Track) printf("\n\t  AliZDCDigitizer ->  spectator signal added at digit level\n\n");
   
   if(fBeamEnergy>0.1){
     ReadPMTGains();
@@ -323,10 +329,10 @@ void AliZDCDigitizer::Digitize(Option_t* /*option*/)
       specPProj = hijingHeader->ProjSpectatorsp();
       specNTarg = hijingHeader->TargSpectatorsn();
       specPTarg = hijingHeader->TargSpectatorsp();
-      printf("\t AliZDCDigitizer: b = %1.2f fm\n"
+      /*printf("\t AliZDCDigitizer: b = %1.2f fm\n"
       " \t    PROJECTILE:  #spectator n %d, #spectator p %d\n"
       " \t    TARGET:  #spectator n %d, #spectator p %d\n", 
-      impPar, specNProj, specPProj, specNTarg, specPTarg);
+      impPar, specNProj, specPProj, specNTarg, specPTarg);*/
     
       // Applying fragmentation algorithm and adding spectator signal
       Int_t freeSpecNProj=0, freeSpecPProj=0;
@@ -335,10 +341,10 @@ void AliZDCDigitizer::Digitize(Option_t* /*option*/)
       if(specNTarg!=0 || specPTarg!=0) Fragmentation(impPar, specNTarg, specPTarg, freeSpecNTarg, freeSpecPTarg);
       if(freeSpecNProj!=0) SpectatorSignal(1, freeSpecNProj, pm);
       if(freeSpecPProj!=0) SpectatorSignal(2, freeSpecPProj, pm);
-      printf("\t AliZDCDigitizer -> Adding spectator signal for PROJECTILE: %d free  n and %d free p\n",freeSpecNProj,freeSpecPProj);
+      //printf("\t AliZDCDigitizer -> Adding spectator signal for PROJECTILE: %d free  n and %d free p\n",freeSpecNProj,freeSpecPProj);
       if(freeSpecNTarg!=0) SpectatorSignal(3, freeSpecNTarg, pm);
       if(freeSpecPTarg!=0) SpectatorSignal(4, freeSpecPTarg, pm);
-      printf("\t AliZDCDigitizer -> Adding spectator signal for TARGET: %d free  n and %d free p\n",freeSpecNTarg,freeSpecPTarg);
+      //printf("\t AliZDCDigitizer -> Adding spectator signal for TARGET: %d free  n and %d free p\n",freeSpecNTarg,freeSpecPTarg);
     }
   }
 
@@ -635,13 +641,12 @@ void AliZDCDigitizer::Fragmentation(Float_t impPar, Int_t specN, Int_t specP,
 }
 
 //_____________________________________________________________________________
-void AliZDCDigitizer::SpectatorSignal(Int_t SpecType, Int_t numEvents, 
-                                      Float_t pm[5][5]) const
+void AliZDCDigitizer::SpectatorSignal(Int_t SpecType, Int_t numEvents, Float_t pm[5][5]) 
 {
 // add signal of the spectators
   
-  TFile *specSignalFile = TFile::Open("$ALICE_ROOT/ZDC/SpectatorSignal.root");
-  if(!specSignalFile || !specSignalFile->IsOpen()) {
+  if(!fSpectatorData) fSpectatorData = TFile::Open("$ALICE_ROOT/ZDC/SpectatorSignal.root");
+  if(!fSpectatorData || !fSpectatorData->IsOpen()) {
     AliError((" Opening file $ALICE_ROOT/ZDC/SpectatorSignal.root failed\n"));
     return;
   }
@@ -652,43 +657,43 @@ void AliZDCDigitizer::SpectatorSignal(Int_t SpecType, Int_t numEvents,
   //
   if(TMath::Abs(sqrtS-5500) < 100.){
     AliInfo(" Extracting signal from SpectatorSignal/energy5500 ");
-    specSignalFile->cd("energy5500");
+    fSpectatorData->cd("energy5500");
     //
     if(SpecType == 1) {           // --- Signal for projectile spectator neutrons
-      specSignalFile->GetObject("energy5500/ZNCSignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy5500/ZNCSignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZNCSignal from SpectatorSignal.root file");
     } 
     else if(SpecType == 2) { // --- Signal for projectile spectator protons
-      specSignalFile->GetObject("energy5500/ZPCSignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy5500/ZPCSignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZPCSignal from SpectatorSignal.root file");
     }
     else if(SpecType == 3) { // --- Signal for target spectator neutrons
-      specSignalFile->GetObject("energy5500/ZNASignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy5500/ZNASignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZNASignal from SpectatorSignal.root file");
     }
     else if(SpecType == 4) { // --- Signal for target spectator protons
-      specSignalFile->GetObject("energy5500/ZPASignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy5500/ZPASignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZPASignal from SpectatorSignal.root file");
     }
   }
   else if(TMath::Abs(sqrtS-2760) < 100.){
     AliInfo(" Extracting signal from SpectatorSignal/energy2760 ");
-    specSignalFile->cd("energy2760");
+    fSpectatorData->cd("energy2760");
     //
     if(SpecType == 1) {           // --- Signal for projectile spectator neutrons
-      specSignalFile->GetObject("energy2760/ZNCSignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy2760/ZNCSignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZNCSignal from SpectatorSignal.root file");
     } 
     else if(SpecType == 2) { // --- Signal for projectile spectator protons
-      specSignalFile->GetObject("energy2760/ZPCSignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy2760/ZPCSignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZPCSignal from SpectatorSignal.root file");
     }
     else if(SpecType == 3) { // --- Signal for target spectator neutrons
-      specSignalFile->GetObject("energy2760/ZNASignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy2760/ZNASignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZNASignal from SpectatorSignal.root file");
     }
     else if(SpecType == 4) { // --- Signal for target spectator protons
-      specSignalFile->GetObject("energy2760/ZPASignal;1",zdcSignal);
+      fSpectatorData->GetObject("energy2760/ZPASignal;1",zdcSignal);
       if(!zdcSignal) AliError("  PROBLEM!!! Can't retrieve ZPASignal from SpectatorSignal.root file");
     }
   }
@@ -743,8 +748,6 @@ void AliZDCDigitizer::SpectatorSignal(Int_t SpecType, Int_t numEvents,
      }
   }while(iev<numEvents);
   
-  specSignalFile->Close();
-  delete specSignalFile;
 }
 
 
index 23b3924..f78b7bf 100644 (file)
@@ -14,6 +14,7 @@
 #include "AliCDBStorage.h"
 #include "AliZDCPedestals.h"
 
+class TFile;
 class AliDigitizationInput;
 
 class AliZDC;
@@ -54,6 +55,9 @@ public:
   // Added for RELDIS
   void    SetRELDISGenerator() {fIsRELDISgen=kTRUE;}
 
+  void    SpectatorSignal(Int_t SpecType, Int_t numEvents, Float_t pm[3][5]);
+
+
 private:
 
   AliZDCDigitizer(const AliZDCDigitizer&);
@@ -64,8 +68,6 @@ private:
 
   void    Fragmentation(Float_t impPar, Int_t specN, Int_t specP,
                         Int_t &freeSpecN, Int_t &freeSpecP) const;
-  void    SpectatorSignal(Int_t SpecType, Int_t numEvents, 
-                          Float_t pm[3][5]) const;
 
   Int_t   Phe2ADCch(Int_t Detector, Int_t Quadrant, Float_t Light, 
                     Int_t Res) const;
@@ -77,7 +79,7 @@ private:
   Bool_t  fIsSignalInADCGate;   // true if signal in ADC gate
   Float_t fFracLostSignal;      // fraction of lost signal
   
-  AliZDCPedestals  *fPedData;     //! pedestal calibration data
+  AliZDCPedestals  *fPedData;  //! pedestal calibration data
   
   Bool_t  fSpectators2Track;    // should digitizer track spectators
   Float_t fBeamEnergy;          // beam energy
@@ -87,8 +89,10 @@ private:
   Bool_t  fIspASystem;         // true if collision system is p-A
 
   // Added for RELDIS
-  Bool_t  fIsRELDISgen;        // treu if generator is RELDIS
+  Bool_t  fIsRELDISgen;        // true if generator is RELDIS
+  
+  TFile  *fSpectatorData;      // pointer to stored spectator data files
        
-  ClassDef(AliZDCDigitizer, 14)     // digitizer for ZDC
+  ClassDef(AliZDCDigitizer, 15)     // digitizer for ZDC
 };    
 #endif