]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeSim.cxx
Fix for copy/paste error
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeSim.cxx
index 635b2f6d475343a11c71a7483e907be265644a78..e8c52028ffb78286a4e38b10a97024dab7553fa9 100644 (file)
@@ -89,6 +89,7 @@ fRunNumber(0),   //! Run number (to access DB)
 fDigits(),       //! [NMod][NDigits]
 fSimuPar(0),
 fDDLMapSDD(0),
+fAveGainSDD(0),
 fkDigClassName(), // String with digit class name.
 fLoader(0),      // local pointer to loader
 fFirstcall(kTRUE),
@@ -142,7 +143,12 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
        delete fCalibration;
     }
     fCalibration = 0;
-    if(fSSDCalibration) delete fSSDCalibration;
+    if(fSSDCalibration) {
+      if(!(AliCDBManager::Instance()->GetCacheFlag())) {
+       delete fSSDCalibration;
+       fSSDCalibration = NULL;
+      }
+    }
     if(fSPDNoisy){
     if(!(AliCDBManager::Instance()->GetCacheFlag())) {
        fSPDNoisy->Delete();
@@ -177,6 +183,7 @@ fRunNumber(source.fRunNumber),   //! Run number (to access DB)
 fDigits(source.fDigits),       //! [NMod][NDigits]
 fSimuPar(source.fSimuPar),
 fDDLMapSDD(source.fDDLMapSDD),
+fAveGainSDD(source.fAveGainSDD),
 fkDigClassName(), // String with digit class name.
 fLoader(source.fLoader),      // local pointer to loader
 fFirstcall(source.fFirstcall),
@@ -519,10 +526,11 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
   */
 
   TObject *emptyssd = 0; TString ssdobjectname;
-  AliITSNoiseSSDv2 *noiseSSD = new AliITSNoiseSSDv2();  
+  AliITSNoiseSSDv2 *noiseSSD = NULL; 
   emptyssd = (TObject *)entryNoiseSSD->GetObject();
   ssdobjectname = emptyssd->GetName();
   if(ssdobjectname=="TObjArray") {
+    noiseSSD = new AliITSNoiseSSDv2(); 
     TObjArray *noiseSSDOld = (TObjArray *)entryNoiseSSD->GetObject();
     ReadOldSSDNoise(noiseSSDOld, noiseSSD);
   }
@@ -531,11 +539,12 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
   if(!isCacheActive)entryNoiseSSD->SetObject(NULL);
   entryNoiseSSD->SetOwner(kTRUE);
 
-  AliITSGainSSDv2 *gainSSD = new AliITSGainSSDv2();
+  AliITSGainSSDv2 *gainSSD = NULL;
   emptyssd = (TObject *)entryGainSSD->GetObject();
   ssdobjectname = emptyssd->GetName();
   if(ssdobjectname=="Gain") {
     TObjArray *gainSSDOld = (TObjArray *)entryGainSSD->GetObject();
+    gainSSD = new AliITSGainSSDv2();
     ReadOldSSDGain(gainSSDOld, gainSSD);
   }
   else if(ssdobjectname=="AliITSGainSSDv2")
@@ -543,11 +552,12 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
   if(!isCacheActive)entryGainSSD->SetObject(NULL);
   entryGainSSD->SetOwner(kTRUE);
 
-  AliITSBadChannelsSSDv2 *badChannelsSSD = new AliITSBadChannelsSSDv2();
+  AliITSBadChannelsSSDv2 *badChannelsSSD = NULL;
   emptyssd = (TObject *)entryBadChannelsSSD->GetObject();
   ssdobjectname = emptyssd->GetName();
   if(ssdobjectname=="TObjArray") {
     TObjArray *badChannelsSSDOld = (TObjArray *)entryBadChannelsSSD->GetObject();
+    badChannelsSSD = new AliITSBadChannelsSSDv2();
     ReadOldSSDBadChannels(badChannelsSSDOld, badChannelsSSD);
   }
   else if(ssdobjectname=="AliITSBadChannelsSSDv2")
@@ -611,6 +621,8 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
   fFOGenerator.SetNoise(calFoNoiSPD); // this cal object is used only by the generator
   
   fDDLMapSDD->SetDDLMap(ddlsdd);
+  Float_t avegain=0.;
+  Float_t nGdAnodes=0;
   Bool_t oldMapFormat=kFALSE;
   TObject* objmap=(TObject*)mapT->At(0);
   TString cname(objmap->ClassName());
@@ -635,6 +647,11 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
       AliWarning(Form("SDD module %d not present in DDL map: set it as dead",iMod));
     }else{
       cal = (AliITSCalibration*) calSDD->At(i);
+      for(Int_t iAnode=0;iAnode< ((AliITSCalibrationSDD*)cal)->NOfAnodes(); iAnode++){
+       if(((AliITSCalibrationSDD*)cal)->IsBadChannel(iAnode)) continue;
+       avegain+= ((AliITSCalibrationSDD*)cal)->GetChannelGain(iAnode);
+       nGdAnodes++;
+      }
       Int_t i0=2*i;
       Int_t i1=1+2*i;
       AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
@@ -658,7 +675,8 @@ if(!deadSPD || !noisySPD || !foEffSPD || !foNoiSPD
       SetCalibrationModel(iMod, cal);
     }
   }
-
+  if(nGdAnodes) fAveGainSDD=avegain/nGdAnodes;
+  AliDebug(3,Form("SDD average gain=%f\n",fAveGainSDD));
   fSSDCalibration->SetNoise(noiseSSD);
   fSSDCalibration->SetGain(gainSSD);
   fSSDCalibration->SetBadChannels(badChannelsSSD);
@@ -976,7 +994,7 @@ AliITSTriggerConditions* AliITSDetTypeSim::GetTriggerConditions() {
     if (fRunNumber<0) isCacheActive=kFALSE;
     else              isCacheActive=kTRUE;
     AliCDBManager::Instance()->SetCacheFlag(isCacheActive);
-    AliCDBEntry *pitCond = AliCDBManager::Instance()->Get("ITS/Calib/PITConditions", fRunNumber);
+    AliCDBEntry *pitCond = AliCDBManager::Instance()->Get("TRIGGER/SPD/PITConditions", fRunNumber);
     if (!pitCond) {
       AliError("Trigger conditions retrieval failed! ");
       return NULL;