From: coppedis Date: Wed, 26 Mar 2014 13:57:02 +0000 (+0100) Subject: Improving file handling at digitization time (item related to https://alice.its.cern... X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=94ff33bf075f76daf2f9a01abd56fd80abfc9209;p=u%2Fmrichter%2FAliRoot.git Improving file handling at digitization time (item related to https://alice.its.cern.ch/jira/browse/ALIROOT-5428). --- diff --git a/ZDC/AliZDCDigitizer.cxx b/ZDC/AliZDCDigitizer.cxx index 14b36a36f84..56ccb7831df 100644 --- a/ZDC/AliZDCDigitizer.cxx +++ b/ZDC/AliZDCDigitizer.cxx @@ -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(ievClose(); - delete specSignalFile; } diff --git a/ZDC/AliZDCDigitizer.h b/ZDC/AliZDCDigitizer.h index 23b392435e1..f78b7bf4d73 100644 --- a/ZDC/AliZDCDigitizer.h +++ b/ZDC/AliZDCDigitizer.h @@ -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