]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFcalib.cxx
Coding conventions (Annalisa)
[u/mrichter/AliRoot.git] / TOF / AliTOFcalib.cxx
index 91b3b574e203b3cdba6f9923d205ad49e4ff3de3..c7d3eb3d493b3f5817058c84703c5837c41b6954 100644 (file)
 
 /*
 $Log$
+Revision 1.7  2006/04/16 20:12:46  hristov
+Removing memory leak in case of cached CDB entries
+
+Revision 1.6  2006/04/11 15:28:32  hristov
+Checks on cache status before deleting calibration objects (A.Colla)
+
 Revision 1.5  2006/04/05 08:35:38  hristov
 Coding conventions (S.Arcelli, C.Zampolli)
 
@@ -89,11 +95,9 @@ AliTOFcalib::AliTOFcalib():TTask("AliTOFcalib",""){
   fNpadZ = geom->NpadZ();
   fNpadX = geom->NpadX();
   fNChannels = fNSector*(2*(fNStripC+fNStripB)+fNStripA)*fNpadZ*fNpadX; //generalized version
-  fTOFCal = new AliTOFCal(geom);
-  fTOFSimCal = new AliTOFCal(geom);
-  fTOFCal->CreateArray();
-  fTOFSimCal->CreateArray();
-  fTOFSimToT=0x0;
+  fTOFCal = 0x0;
+  fTOFSimCal = 0x0;
+  fTOFSimToT = 0x0;
   delete geom;
 }
 //_______________________________________________________________________
@@ -110,11 +114,9 @@ AliTOFcalib::AliTOFcalib(AliTOFGeometry *geom):TTask("AliTOFcalib",""){
   fNpadZ = geom->NpadZ();
   fNpadX = geom->NpadX();
   fNChannels = fNSector*(2*(fNStripC+fNStripB)+fNStripA)*fNpadZ*fNpadX; //generalized version
-  fTOFCal = new AliTOFCal(geom);
-  fTOFSimCal = new AliTOFCal(geom);
-  fTOFCal->CreateArray();
-  fTOFSimCal->CreateArray();
-  fTOFSimToT=0x0;
+  fTOFCal = 0x0;
+  fTOFSimCal = 0x0;
+  fTOFSimToT = 0x0;
 }
 //____________________________________________________________________________ 
 
@@ -138,6 +140,27 @@ AliTOFcalib::AliTOFcalib(const AliTOFcalib & calib):TTask("AliTOFcalib","")
 
 //____________________________________________________________________________ 
 
+AliTOFcalib& AliTOFcalib::operator=(const AliTOFcalib &calib)
+{
+  //TOF Calibration Class assignment operator
+  this->fNSector = calib.fNSector;
+  this->fNPlate = calib.fNPlate;
+  this->fNStripA = calib.fNStripA;
+  this->fNStripB = calib.fNStripB;
+  this->fNStripC = calib.fNStripC;
+  this->fNpadZ = calib.fNpadZ;
+  this->fNpadX = calib.fNpadX;
+  this->fNChannels = calib.fNChannels;
+  this->fArrayToT = calib.fArrayToT;
+  this->fArrayTime = calib.fArrayTime;
+  this->fTOFCal=calib.fTOFCal;
+  this->fTOFSimCal = calib.fTOFSimCal;
+  this->fTOFSimToT=calib.fTOFSimToT;
+  return *this;
+}
+
+//____________________________________________________________________________ 
+
 AliTOFcalib::~AliTOFcalib()
 {
   //TOF Calibration Class dtor
@@ -484,6 +507,12 @@ void AliTOFcalib::CalibrateESD(){
     for (Int_t kk = 0; kk< nfpar; kk++){
       par[kk]=fGold->GetParameter(kk);
     }
+    if (!fTOFCal) {
+      AliTOFGeometry *geom=new AliTOFGeometryV5();
+      fTOFCal = new AliTOFCal(geom);
+      fTOFCal->CreateArray();
+      delete geom;
+    }
     AliTOFChannel * calChannel = fTOFCal->GetChannel(i);
     calChannel->SetSlewPar(par);
   }
@@ -605,6 +634,12 @@ void AliTOFcalib::CorrectESDTime()
     else if (ipid == 1) etime = expTime[3]*1E-3; //ns
     else if (ipid == 2) etime = expTime[4]*1E-3; //ns
     Float_t par[6];
+    if (!fTOFCal) {
+      AliTOFGeometry *geom=new AliTOFGeometryV5();
+      fTOFCal = new AliTOFCal(geom);
+      fTOFCal->CreateArray();
+      delete geom;
+    }
     AliTOFChannel * calChannel = fTOFCal->GetChannel(index);
     for (Int_t j = 0; j<6; j++){
       par[j]=calChannel->GetSlewPar(j);
@@ -634,6 +669,12 @@ void AliTOFcalib::CorrectESDTime(AliESD *event){
       continue;
     }
     Int_t index = t->GetTOFCalChannel();
+    if (!fTOFCal) {
+      AliTOFGeometry *geom=new AliTOFGeometryV5();
+      fTOFCal = new AliTOFCal(geom);
+      fTOFCal->CreateArray();
+      delete geom;
+    }
     AliTOFChannel * calChannel = fTOFCal->GetChannel(index);
     Float_t par[6];
     for (Int_t j = 0; j<6; j++){
@@ -657,6 +698,12 @@ void AliTOFcalib::WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
   AliCDBId id(out,minrun,maxrun);
   AliCDBMetaData *md = new AliCDBMetaData();
   md->SetResponsible("Chiara Zampolli");
+  if (!fTOFCal) {
+    AliTOFGeometry *geom=new AliTOFGeometryV5();
+    fTOFCal = new AliTOFCal(geom);
+    fTOFCal->CreateArray();
+    delete geom;
+  }
   man->Put(fTOFCal,id,md);
   delete md;
 }
@@ -713,7 +760,12 @@ void AliTOFcalib::WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
   for (Int_t ipar=0;ipar<npar;ipar++){
     par[ipar]=f->GetParameter(ipar);
   }
-
+  if (!fTOFSimCal) {
+    AliTOFGeometry *geom=new AliTOFGeometryV5();
+    fTOFSimCal = new AliTOFCal(geom);
+    fTOFSimCal->CreateArray();
+    delete geom;
+  }
   for(Int_t iTOFch=0; iTOFch<fTOFSimCal->NPads();iTOFch++){
     AliTOFChannel * calChannel = fTOFSimCal->GetChannel(iTOFch);
     calChannel->SetSlewPar(par);