Modifications needed to do the following:
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 9 Apr 2006 14:43:46 +0000 (14:43 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 9 Apr 2006 14:43:46 +0000 (14:43 +0000)
1) if the run number stored in the CDBmanager is negative, the CDB is accessed with run 0. The cache for ITS is temporarily disabled and the calibration objects, stored in AliITSDetType* are deleted by the container class destructor.
2) if the run number is >=0, the cache is enabled and the calibration object are not deleted by the ITS container destructor
3) if the GetCalibration method is called more than once per run, the access to CDB is not attempted more than once
Massimo

ITS/AliITSDetTypeRec.cxx
ITS/AliITSDetTypeRec.h
ITS/AliITSDetTypeSim.cxx
ITS/AliITSDetTypeSim.h
ITS/AliITSvPPRasymmFMD.cxx

index 2871e7d51d5ab89104092b2a58a5af192895a250..9975a3fe2e7764cb785daabdc6653aba958fc52b 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
  * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
+ * Conributors are mentioned in the code where appropriate.              *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
@@ -84,6 +84,7 @@ AliITSDetTypeRec::AliITSDetTypeRec(): TObject(){
   SelectVertexer(" ");
   fLoader = 0;
   fRunNumber = 0;
+  fFirstcall = kTRUE;
 
 }
 //________________________________________________________________
@@ -126,6 +127,7 @@ AliITSDetTypeRec::AliITSDetTypeRec(AliITSLoader *loader): TObject(){
   fLoader = loader;
  
   SetRunNumber();
+  fFirstcall = kTRUE;
 }
 //______________________________________________________________________
 AliITSDetTypeRec::AliITSDetTypeRec(const AliITSDetTypeRec &/*rec*/):TObject(/*rec*/){
@@ -157,7 +159,7 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
     delete fSegmentation;
     fSegmentation = 0;
   }
-  if(fCalibration){
+  if(fCalibration && fRunNumber<0){
     AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse();    
     AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse();
     AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse();
@@ -378,90 +380,115 @@ void AliITSDetTypeRec::SetDefaults(){
 Bool_t AliITSDetTypeRec::GetCalibration() {
   // Get Default calibration if a storage is not defined.
 
+  if(!fFirstcall){
+    AliITSCalibration* cal = GetCalibrationModel(0);
+    if(cal)return kTRUE;
+  }
+  else {
+    fFirstcall = kFALSE;
+  }
 
-  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);
-  AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", fRunNumber);
-  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", fRunNumber);
-  AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", fRunNumber);
+  SetRunNumber((Int_t)AliCDBManager::Instance()->GetRun());
+  Int_t run=GetRunNumber();
+  if(run<0)run=0;   // if the run number is not yet set, use fake run # 0
+
+  Bool_t origCacheStatus = AliCDBManager::Instance()->GetCacheFlag();
+  Bool_t isCacheActive = kTRUE;
+  if(GetRunNumber()<0)isCacheActive=kFALSE;
+  if (fCalibration==0) {
+    fCalibration = new TObjArray(GetITSgeom()->GetIndexMax());
+    fCalibration->SetOwner(isCacheActive);
+    fCalibration->Clear();
+  }
+
+  AliCDBManager::Instance()->SetCacheFlag(isCacheActive);
+
+  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
+  AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
+  AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
+  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
+  AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
 
   if(!entrySPD || !entrySDD || !entrySSD || !entry2SPD || !entry2SDD || !entry2SSD){
        AliWarning("Calibration object retrieval failed! Dummy calibration will be used.");
        AliCDBStorage *origStorage = AliCDBManager::Instance()->GetDefaultStorage();
        AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
        
-       entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", fRunNumber);
-       entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", fRunNumber);
-       entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", fRunNumber);
-       entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", fRunNumber);
-       entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", fRunNumber);
-       entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", fRunNumber);
+       entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
+       entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+       entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
+       entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
+       entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
+       entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
        
        AliCDBManager::Instance()->SetDefaultStorage(origStorage);
   }
 
  
-  TObjArray *respSPD = (TObjArray *)entrySPD->GetObject();
-  entrySPD->SetObject(NULL);
+  TObjArray *calSPD = (TObjArray *)entrySPD->GetObject();
+  if(!isCacheActive)entrySPD->SetObject(NULL);
   entrySPD->SetOwner(kTRUE);
  
   AliITSresponseSPD *pSPD = (AliITSresponseSPD*)entry2SPD->GetObject();
-  entry2SPD->SetObject(NULL);
+  if(!isCacheActive)entry2SPD->SetObject(NULL);
   entry2SPD->SetOwner(kTRUE);
     
-  TObjArray *respSDD = (TObjArray *)entrySDD->GetObject();
-  entrySDD->SetObject(NULL);
+  TObjArray *calSDD = (TObjArray *)entrySDD->GetObject();
+  if(!isCacheActive)entrySDD->SetObject(NULL);
   entrySDD->SetOwner(kTRUE);
  
   AliITSresponseSDD *pSDD = (AliITSresponseSDD*)entry2SDD->GetObject();
-  entry2SDD->SetObject(NULL);
+  if(!isCacheActive)entry2SDD->SetObject(NULL);
   entry2SDD->SetOwner(kTRUE);
 
-  TObjArray *respSSD = (TObjArray *)entrySSD->GetObject();
-  entrySSD->SetObject(NULL);
+  TObjArray *calSSD = (TObjArray *)entrySSD->GetObject();
+  if(!isCacheActive)entrySSD->SetObject(NULL);
   entrySSD->SetOwner(kTRUE);
 
   AliITSresponseSSD *pSSD = (AliITSresponseSSD*)entry2SSD->GetObject();
-  entry2SSD->SetObject(NULL);
+  if(!isCacheActive)entry2SSD->SetObject(NULL);
   entry2SSD->SetOwner(kTRUE);
 
-  // DB entries are dleted. In this waymetadeta objects are deleted as well
-  delete entrySPD;
-  delete entrySDD;
-  delete entrySSD;
-  delete entry2SPD;
-  delete entry2SDD;
-  delete entry2SSD;
+  // DB entries are deleted. In this way metadeta objects are deleted as well
+  if(!isCacheActive){
+    delete entrySPD;
+    delete entrySDD;
+    delete entrySSD;
+    delete entry2SPD;
+    delete entry2SDD;
+    delete entry2SSD;
+  }
 
+  AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
   
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!respSPD) || (!respSDD) || (!respSSD)) {
+  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!calSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
 
-  fNMod[0] = respSPD->GetEntries();
-  fNMod[1] = respSDD->GetEntries();
-  fNMod[2] = respSSD->GetEntries();
+  fNMod[0] = calSPD->GetEntries();
+  fNMod[1] = calSDD->GetEntries();
+  fNMod[2] = calSSD->GetEntries();
   AliInfo(Form("%i SPD, %i SDD and %i SSD in calibration database",
               fNMod[0], fNMod[1], fNMod[2]));
-  AliITSCalibration* res;
+  AliITSCalibration* cal;
   for (Int_t i=0; i<fNMod[0]; i++) {
-    res = (AliITSCalibration*) respSPD->At(i);
-    res->SetResponse((AliITSresponse*)pSPD);
-    SetCalibrationModel(i, res);
+    cal = (AliITSCalibration*) calSPD->At(i);
+    cal->SetResponse((AliITSresponse*)pSPD);
+    SetCalibrationModel(i, cal);
  }
   for (Int_t i=0; i<fNMod[1]; i++) {
-    res = (AliITSCalibration*) respSDD->At(i);
-    res->SetResponse((AliITSresponse*)pSDD);
+    cal = (AliITSCalibration*) calSDD->At(i);
+    cal->SetResponse((AliITSresponse*)pSDD);
     Int_t iMod = i + fNMod[0];
-    SetCalibrationModel(iMod, res);
+    SetCalibrationModel(iMod, cal);
  }
   for (Int_t i=0; i<fNMod[2]; i++) {
-    res = (AliITSCalibration*) respSSD->At(i);
-    res->SetResponse((AliITSresponse*)pSSD);
+    cal = (AliITSCalibration*) calSSD->At(i);
+    cal->SetResponse((AliITSresponse*)pSSD);
     Int_t iMod = i + fNMod[0] + fNMod[1];
-    SetCalibrationModel(iMod, res);
+    SetCalibrationModel(iMod, cal);
  }
 
   return kTRUE;
index 19110dd853eab1c65b5e053ec045e95b0c0f74d4..f5f4d082b9b36230a6e759ec2cf1204655563ae2 100644 (file)
@@ -128,9 +128,10 @@ class AliITSDetTypeRec : public TObject {
 
     TString fSelectedVertexer; // Vertexer selected in CreateVertexer
     AliITSLoader* fLoader;     //! ITS loader
-    Int_t         fRunNumber;    //! run number (to access DB)
+    Int_t         fRunNumber;  //! run number (to access DB)
+    Bool_t fFirstcall;         //! flag
 
-    ClassDef(AliITSDetTypeRec,5) // ITS Reconstruction structure
+    ClassDef(AliITSDetTypeRec,6) // ITS Reconstruction structure
 };
 
 #endif
index 6b4bdc885ef334ec82d638ef2bab13569b477726..2b3371c7194c22d48a47931212187e7bb2d579d6 100644 (file)
@@ -100,7 +100,7 @@ fDigClassName(){ // String with digit class name.
   fNMod[1] = fgkDefaultNModulesSDD;
   fNMod[2] = fgkDefaultNModulesSSD;
   SetRunNumber();
-
+  fFirstcall = kTRUE;
 }
 //----------------------------------------------------------------------
 AliITSDetTypeSim::~AliITSDetTypeSim(){
@@ -124,7 +124,7 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
       fSegmentation = 0;
     }
     
-    if(fCalibration){
+    if(fCalibration && fRunNumber<0){
       AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSPD()))->GetResponse();
       AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSDD()))->GetResponse();
       AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(fGeom->GetStartSSD()))->GetResponse();
@@ -280,12 +280,12 @@ void AliITSDetTypeSim::CreateCalibrationArray() {
 
   //Create the container of calibration functions with correct size
   if (fCalibration) {
+    Warning("CreateCalibration","pointer to calibration object exists\n");
     fCalibration->Delete();
     delete fCalibration;
   }
 
-  Int_t nModTot = 0;
-  for (Int_t i=0; i<fgkNdettypes; i++) nModTot += fNMod[i];
+  Int_t nModTot = fGeom->GetIndexMax();
   fCalibration = new TObjArray(nModTot);
   fCalibration->SetOwner(kTRUE);
   fCalibration->Clear();
@@ -308,9 +308,18 @@ void AliITSDetTypeSim::SetCalibrationModel(Int_t iMod, AliITSCalibration *resp){
 void AliITSDetTypeSim::ResetCalibrationArray(){
 
   //resets response array
-  if(fCalibration)
+  if(fCalibration && fRunNumber<0){  // if fRunNumber<0 fCalibration is owner
+    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;
+    if(rsdd) delete rsdd;
+    if(rssd) delete rssd;
     fCalibration->Clear();
-
+  }
+  else if (fCalibration && fRunNumber>=0){
+    fCalibration->Clear();
+  }
 }
 //______________________________________________________________________
 void AliITSDetTypeSim::ResetSegmentation(){
@@ -340,9 +349,10 @@ void AliITSDetTypeSim::SetDefaults(){
     Warning("SetDefaults","fGeom is 0!");
     return;
   }
-  if (fCalibration==0) CreateCalibrationArray();
+  if (fCalibration==0) {
+    CreateCalibrationArray();
+  }
 
-  ResetCalibrationArray();
   ResetSegmentation();
   if(!GetCalibration()){AliFatal("Exit"); exit(0);}
 
@@ -390,91 +400,119 @@ 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);
-  AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", fRunNumber);
-  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", fRunNumber);
-  AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", fRunNumber);
+  if(!fFirstcall){
+    AliITSCalibration* cal = GetCalibrationModel(0);
+    if(cal)return kTRUE;
+  }
+  else {
+    fFirstcall = kFALSE;
+  }
+
+  SetRunNumber((Int_t)AliCDBManager::Instance()->GetRun());
+  Int_t run=GetRunNumber();
+  if(run<0)run=0;   // if the run number is not yet set, use fake run # 0
+
+  Bool_t origCacheStatus = AliCDBManager::Instance()->GetCacheFlag();
+  Bool_t isCacheActive = kTRUE;
+  if(GetRunNumber()<0){
+    isCacheActive=kFALSE;
+    fCalibration->SetOwner(kTRUE);
+  }
+  else{
+    fCalibration->SetOwner(kFALSE);
+  }
+
+  AliCDBManager::Instance()->SetCacheFlag(isCacheActive);
+
+  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
+  AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
+  AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
+  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
+  AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
 
   if(!entrySPD || !entrySDD || !entrySSD || !entry2SPD || !entry2SDD || !entry2SSD){
     AliWarning("Calibration object retrieval failed! Dummy calibration will be used.");
     AliCDBStorage *origStorage = AliCDBManager::Instance()->GetDefaultStorage();
     AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
        
-    entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", fRunNumber);
-    entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", fRunNumber);
-    entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", fRunNumber);
-    entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", fRunNumber);
-    entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", fRunNumber);
-    entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", fRunNumber);
+    entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
+    entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+    entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
+    entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
+    entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
+    entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
        
     AliCDBManager::Instance()->SetDefaultStorage(origStorage);
   }
 
 
-  TObjArray *respSPD = (TObjArray *)entrySPD->GetObject();
-  entrySPD->SetObject(NULL);
+  TObjArray *calSPD = (TObjArray *)entrySPD->GetObject();
+  if(!isCacheActive)entrySPD->SetObject(NULL);
   entrySPD->SetOwner(kTRUE);
 
   AliITSresponseSPD *pSPD = (AliITSresponseSPD*)entry2SPD->GetObject();
-  entry2SPD->SetObject(NULL);
+  if(!isCacheActive)entry2SPD->SetObject(NULL);
   entry2SPD->SetOwner(kTRUE);
    
-  TObjArray *respSDD = (TObjArray *)entrySDD->GetObject();
-  entrySDD->SetObject(NULL);
+  TObjArray *calSDD = (TObjArray *)entrySDD->GetObject();
+  if(!isCacheActive)entrySDD->SetObject(NULL);
   entrySDD->SetOwner(kTRUE);
 
   AliITSresponseSDD *pSDD = (AliITSresponseSDD*)entry2SDD->GetObject();
-  entry2SDD->SetObject(NULL);
+  if(!isCacheActive)entry2SDD->SetObject(NULL);
   entry2SDD->SetOwner(kTRUE);
 
-  TObjArray *respSSD = (TObjArray *)entrySSD->GetObject();
-  entrySSD->SetObject(NULL);
+  TObjArray *calSSD = (TObjArray *)entrySSD->GetObject();
+  if(!isCacheActive)entrySSD->SetObject(NULL);
   entrySSD->SetOwner(kTRUE);
 
   AliITSresponseSSD *pSSD = (AliITSresponseSSD*)entry2SSD->GetObject();
-  entry2SSD->SetObject(NULL);
+  if(!isCacheActive)entry2SSD->SetObject(NULL);
   entry2SSD->SetOwner(kTRUE);
   
-  // DB entries are dleted. In this waymetadeta objects are deleted as well
-  delete entrySPD;
-  delete entrySDD;
-  delete entrySSD;
-  delete entry2SPD;
-  delete entry2SDD;
-  delete entry2SSD;
+  // DB entries are deleted. In this way metadeta objects are deleted as well
+  if(!isCacheActive){
+    delete entrySPD;
+    delete entrySDD;
+    delete entrySSD;
+    delete entry2SPD;
+    delete entry2SDD;
+    delete entry2SSD;
+  }
   
+  AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
+
   if ((!pSPD)||(!pSDD)||(!pSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
-  if ((! respSPD)||(! respSDD)||(! respSSD)) {
+  if ((! calSPD)||(! calSDD)||(! calSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
-  fNMod[0] = respSPD->GetEntries();
-  fNMod[1] = respSDD->GetEntries();
-  fNMod[2] = respSSD->GetEntries();
+  fNMod[0] = calSPD->GetEntries();
+  fNMod[1] = calSDD->GetEntries();
+  fNMod[2] = calSSD->GetEntries();
   AliInfo(Form("%i SPD, %i SDD and %i SSD in calibration database",
               fNMod[0], fNMod[1], fNMod[2]));
-  AliITSCalibration* res;
+  AliITSCalibration* cal;
   for (Int_t i=0; i<fNMod[0]; i++) {
-    res = (AliITSCalibration*) respSPD->At(i);
-    res->SetResponse((AliITSresponse*)pSPD);
-    SetCalibrationModel(i, res);
+    cal = (AliITSCalibration*) calSPD->At(i);
+    cal->SetResponse(pSPD);
+    SetCalibrationModel(i, cal);
  }
   for (Int_t i=0; i<fNMod[1]; i++) {
-    res = (AliITSCalibration*) respSDD->At(i);
-    res->SetResponse(pSDD);
+    cal = (AliITSCalibration*) calSDD->At(i);
+    cal->SetResponse(pSDD);
     Int_t iMod = i + fNMod[0];
-    SetCalibrationModel(iMod, res);
+    SetCalibrationModel(iMod, cal);
  }
   for (Int_t i=0; i<fNMod[2]; i++) {
-    res = (AliITSCalibration*) respSSD->At(i);
-    res->SetResponse((AliITSresponse*)pSSD);
+    cal = (AliITSCalibration*) calSSD->At(i);
+    cal->SetResponse(pSSD);
     Int_t iMod = i + fNMod[0] + fNMod[1];
-    SetCalibrationModel(iMod, res);
+    SetCalibrationModel(iMod, cal);
  }
 
   return kTRUE;
@@ -553,7 +591,7 @@ void AliITSDetTypeSim::SetTreeAddressS(TTree* treeS, Char_t* name){
   if(!treeS){
     return;
   }
-  if (fSDigits == 0x0){
+  if (fSDigits ==  0x0){
     fSDigits = new TClonesArray("AliITSpListItem",1000);
   }
   TBranch *branch;
index 54198ff9ea660a72185ad0bb9fa038ab000c5b0e..7d1d11ec7ab9ced3a204306db2276b20cd11a70c 100644 (file)
@@ -111,14 +111,15 @@ class AliITSDetTypeSim : public TObject {
     Int_t         fNSDigits;     //! number of SDigits
     TClonesArray *fSDigits;      //! [NMod][NSDigits]
     Int_t*        fNDigits;      //! [NDet] number of Digits for det.
-    Int_t         fRunNumber;    //! run number (to access DB)
+    Int_t      fRunNumber;    //! run number (to access DB)
     TObjArray     *fDigits;       //! [NMod][NDigits]
     TString       fHitClassName; //! String with Hit class name
     TString       fSDigClassName;//! String with SDigit class name.
     Char_t*       fDigClassName[3]; //! String with digit class name.
-    AliLoader* fLoader;        // loader  
+    AliLoader*    fLoader;          //! loader  
+    Bool_t fFirstcall;              //! flag
     
-  ClassDef(AliITSDetTypeSim,3) // ITS Simulation structure
+  ClassDef(AliITSDetTypeSim,4) // ITS Simulation structure
  
 };
 
index f1a7450dcb5b148632dd6a43bec1e66318b3662d..0a2e51f805a671ea9c081810f6943334d22ae90f 100644 (file)
@@ -5378,8 +5378,6 @@ void AliITSvPPRasymmFMD::SetDefaults(){
     Int_t i;
     Float_t bx[256],bz[280];
    
-    fDetTypeSim->ResetCalibrationArray();
-    fDetTypeSim->ResetSegmentation();
     
     fDetTypeSim->SetDefaults();