Digitizer: improved access to CDB for multievent jobs. Memory leak fixed in AliITSDet...
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 21 Mar 2006 13:41:08 +0000 (13:41 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 21 Mar 2006 13:41:08 +0000 (13:41 +0000)
ITS/AliITSDetTypeSim.cxx
ITS/AliITSDigitizer.cxx
ITS/AliITSDigitizer.h

index 24093c8..6b4bdc8 100644 (file)
@@ -112,7 +112,6 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
     // Return:
     //    Nothing.
   
-   
     if(fSimulation){
       fSimulation->Delete();
       delete fSimulation;
@@ -126,7 +125,7 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
     }
     
     if(fCalibration){
-      AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSPD()))->GetResponse();    
+      AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSPD()))->GetResponse();
       AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSDD()))->GetResponse();
       AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSSD()))->GetResponse();
       if(rspd) delete rspd;
@@ -150,7 +149,9 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
       delete fPostProcess;
       fPostProcess = 0;
     }
-    
+
+    if(fNDigits) delete [] fNDigits;
+
     if (fLoader)
       {
        fLoader->GetModulesFolder()->Remove(this);
@@ -335,12 +336,10 @@ void AliITSDetTypeSim::SetDefaults(){
 
   //Set defaults for segmentation and response
 
-
   if(fGeom==0){
     Warning("SetDefaults","fGeom is 0!");
     return;
   }
-
   if (fCalibration==0) CreateCalibrationArray();
 
   ResetCalibrationArray();
@@ -385,14 +384,12 @@ void AliITSDetTypeSim::SetDefaults(){
       }
     }
   }
 }
 
 //______________________________________________________________________
 Bool_t AliITSDetTypeSim::GetCalibration() {
   // Get Default calibration if a storage is not defined.
 
-
   AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", fRunNumber);
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", fRunNumber);
   AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", fRunNumber);
@@ -520,11 +517,6 @@ void AliITSDetTypeSim::SetDefaultSimulation(){
       if(!sim){
        sim = new AliITSsimulationSPD(this);
        SetSimulationModel(idet,sim);
-      } else{
-       // loop over all SPD modules
-       sim->SetDetType(this);
-       sim->SetSegmentationModel(0,(AliITSsegmentationSPD*)GetSegmentationModel(idet));
-       sim->Init();
       }
     }
     //SDD
@@ -533,10 +525,6 @@ void AliITSDetTypeSim::SetDefaultSimulation(){
       if(!sim){
        sim = new AliITSsimulationSDD(this);
        SetSimulationModel(idet,sim);
-      } else {
-       sim->SetDetType(this);
-       sim->SetSegmentationModel(1,(AliITSsegmentationSDD*)GetSegmentationModel(idet));
-       sim->Init();
       }
       
     }
@@ -546,14 +534,6 @@ void AliITSDetTypeSim::SetDefaultSimulation(){
       if(!sim){
        sim = new AliITSsimulationSSD(this);
        SetSimulationModel(idet,sim);
-
-      } else{
-       
-       sim->SetDetType(this);
-       sim->SetSegmentationModel(2,(AliITSsegmentationSSD*)GetSegmentationModel(idet));
-
-    
-       sim->Init();
       }
 
     }
index d38f746..f7123fe 100644 (file)
@@ -56,6 +56,7 @@ AliITSDigitizer::AliITSDigitizer() : AliDigitizer(){
     fRoif     = -1;
     fRoiifile = 0;
     fInit     = kFALSE;
+    fFlagFirstEv =kTRUE;
 }
 //______________________________________________________________________
 AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
@@ -73,6 +74,7 @@ AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
     fRoif     = -1;
     fRoiifile = 0;
     fInit     = kFALSE;
+    fFlagFirstEv =kTRUE;
 }
 
 //______________________________________________________________________
@@ -99,7 +101,6 @@ AliITSDigitizer::~AliITSDigitizer(){
     //      none.
     // Return:
     //      none.
-
     fITS = 0; // don't delete fITS. Done else where.
     if(fModActive) delete[] fModActive;
 }
@@ -157,19 +158,22 @@ void AliITSDigitizer::Exec(Option_t* opt){
                           strstr(opt,"SSD")};
     if( !det[0] && !det[1] && !det[2] ) all = "All";
     else all = 0;
+    Int_t nfiles = GetManager()->GetNinputs();
+    Int_t event  = GetManager()->GetOutputEventNr();
     AliITSsimulation *sim      = 0;
-    fITS->SetDefaults();
-    fITS->SetDefaultSimulation();
+    if(fFlagFirstEv){
+      fITS->SetDefaults();    
+      fITS->SetDefaultSimulation();
+      fFlagFirstEv=kFALSE;
+    }
     if(!fInit){
-       Error("Exec","Init not succesfull, aborting.");
+       Error("Exec","Init not successful, aborting.");
        return;
     } // end if
 
     sprintf(name,"%s",fITS->GetName());
 
-    Int_t nfiles = GetManager()->GetNinputs();
-    Int_t event  = GetManager()->GetOutputEventNr();
-     Int_t size   = fITS->GetITSgeom()->GetIndexMax();
+    Int_t size   = fITS->GetITSgeom()->GetIndexMax();
     Int_t module,id,ifiles,mask;
     Bool_t lmod;
     Int_t *fl = new Int_t[nfiles];
index ec370cd..22d8240 100644 (file)
@@ -64,7 +64,8 @@ class AliITSDigitizer : public AliDigitizer{
     Int_t   fRoif;     //! Region of interest flag.
     Int_t   fRoiifile; //! The file number with which to determing the region
                        // of interest from.
+    Bool_t fFlagFirstEv; //! Flag to control calibration access
 
-    ClassDef(AliITSDigitizer,1) // Task to Digitize ITS from summable hits.
+    ClassDef(AliITSDigitizer,2) // Task to Digitize ITS from summable hits.
 };
 #endif