]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeRec.cxx
track number corrected
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
index 9cb576818c5228c3f1430ffa9dbd117df715eea3..4ecd7c88cc72fe0624f946bdc7f0c6ca1e07789b 100644 (file)
 #include "AliCDBStorage.h"
 #include "AliCDBEntry.h"
 #include "AliITSClusterFinder.h"
-#include "AliITSClusterFinderV2.h"
 #include "AliITSClusterFinderV2SPD.h"
 #include "AliITSClusterFinderV2SDD.h"
 #include "AliITSClusterFinderV2SSD.h"
-#include "AliITSClusterFinderSPD.h"
-#include "AliITSClusterFinderSDD.h"
-#include "AliITSClusterFinderSSD.h"
 #include "AliITSDetTypeRec.h"
 #include "AliITSgeom.h"
-#include "AliITSRawCluster.h"
-#include "AliITSRawClusterSPD.h"
-#include "AliITSRawClusterSDD.h"
-#include "AliITSRawClusterSSD.h"
 #include "AliITSRecPoint.h"
 #include "AliITSReconstructor.h"
 #include "AliITSRecoParam.h"
@@ -49,6 +41,7 @@
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
+#include "AliITSHLTforSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSDv2.h"
 #include "AliITSGainSSDv2.h"
@@ -78,18 +71,17 @@ fSegmentation(0),
 fCalibration(0),
 fSSDCalibration(0),
 fSPDDead(0),
-fPreProcess(0),
-fPostProcess(0),
+fSPDFastOr(0),
 fDigits(0),
 fDDLMapSDD(0),
 fRespSDD(0),
-fNdtype(0),
-fCtype(0),
-fNctype(0),
+fAveGainSDD(0),
+fIsHLTmodeC(0),
 fRecPoints(0),
 fNRecPoints(0),
-fSelectedVertexer(),
-fFirstcall(kTRUE){
+fFirstcall(kTRUE),
+fLoadOnlySPDCalib(0),
+fFastOrFiredMap(1200){
     // Standard Constructor
     // Inputs:
     //    none.
@@ -101,14 +93,9 @@ fFirstcall(kTRUE){
   fReconstruction = new TObjArray(fgkNdettypes);
   fDigits = new TObjArray(fgkNdettypes);
   for(Int_t i=0; i<3; i++){
-    fClusterClassName[i]=0;
     fDigClassName[i]=0;
-    fRecPointClassName[i]=0;
   }
   fSSDCalibration=new AliITSCalibrationSSD();
-  fNdtype = new Int_t[fgkNdettypes];
-  fCtype = new TObjArray(fgkNdettypes);
-  fNctype = new Int_t[fgkNdettypes];
   fNMod = new Int_t [fgkNdettypes];
   fNMod[0] = fgkDefaultNModulesSPD;
   fNMod[1] = fgkDefaultNModulesSDD;
@@ -116,12 +103,7 @@ fFirstcall(kTRUE){
   fRecPoints = new TClonesArray("AliITSRecPoint",3000);
   fNRecPoints = 0;
   
-  for(Int_t i=0;i<fgkNdettypes;i++){
-    fNdtype[i]=0;
-    fNctype[i]=0;
-  }
   
-  SelectVertexer(" "); 
 }
 
 //______________________________________________________________________
@@ -133,19 +115,17 @@ fSegmentation(rec.fSegmentation),
 fCalibration(rec.fCalibration),
 fSSDCalibration(rec.fSSDCalibration),
 fSPDDead(rec.fSPDDead),
-fPreProcess(rec.fPreProcess),
-fPostProcess(rec.fPostProcess),
+fSPDFastOr(rec.fSPDFastOr),
 fDigits(rec.fDigits),
 fDDLMapSDD(rec.fDDLMapSDD),
 fRespSDD(rec.fRespSDD),
-fNdtype(rec.fNdtype),
-fCtype(rec.fCtype),
-fNctype(rec.fNctype),
+fAveGainSDD(rec.fAveGainSDD),
+fIsHLTmodeC(rec.fIsHLTmodeC),
 fRecPoints(rec.fRecPoints),
 fNRecPoints(rec.fNRecPoints),
-fSelectedVertexer(rec.fSelectedVertexer),
-fFirstcall(rec.fFirstcall)
-{
+fFirstcall(rec.fFirstcall),
+fLoadOnlySPDCalib(rec.fLoadOnlySPDCalib),
+fFastOrFiredMap(rec.fFastOrFiredMap){
 
   // Copy constructor. 
 
@@ -175,17 +155,6 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
   }
   if(fCalibration){
     if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      AliITSCalibration * calSPD = (AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()); 
-      if (calSPD) {
-       AliITSresponse* rspd = calSPD->GetResponse();    
-       if(rspd) delete rspd;
-      }
-
-      AliITSCalibration * calSSD = (AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD());
-      if (calSSD) {
-       AliITSresponse* rssd = calSSD->GetResponse();
-       if(rssd) delete rssd;
-      }
       fCalibration->Delete();
       delete fCalibration;
       fCalibration = 0;
@@ -201,8 +170,6 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
       fSPDDead = 0;
     }
   }  
-  if(fPreProcess) delete fPreProcess;
-  if(fPostProcess) delete fPostProcess;
   if(fDigits){
     fDigits->Delete();
     delete fDigits;
@@ -213,13 +180,6 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
     delete fRecPoints;
     fRecPoints=0;
   }
-  if(fCtype) {
-    fCtype->Delete();
-    delete fCtype;
-    fCtype = 0;
-  }
-  delete [] fNctype;
-  delete [] fNdtype;
   delete [] fNMod;
   
   if (fITSgeom) delete fITSgeom;
@@ -335,7 +295,7 @@ void AliITSDetTypeRec::SetTreeAddressD(TTree *treeD){
 
     const char *det[4] = {"SPD","SDD","SSD","ITS"};
     TBranch *branch;
-    Char_t* digclass;
+    const Char_t* digclass;
     Int_t i;
     char branchname[30];
 
@@ -405,28 +365,25 @@ void AliITSDetTypeRec::SetDefaults(){
       seg = new AliITSsegmentationSPD();
       SetSegmentationModel(dettype,seg);
       SetDigitClassName(dettype,"AliITSdigitSPD");
-      SetClusterClassName(dettype,"AliITSRawClusterSPD");
-
     }
-    if(dettype==1){
-      seg = new AliITSsegmentationSDD();
-      AliITSCalibrationSDD* cal=(AliITSCalibrationSDD*)GetCalibrationModel(fgkDefaultNModulesSPD+1);
-      if(cal->IsAMAt20MHz()){ 
-       seg->SetPadSize(seg->Dpz(0),20.);
-       seg->SetNPads(seg->Npz()/2,128);
+    if(fLoadOnlySPDCalib==kFALSE){
+      if(dettype==1){
+       seg = new AliITSsegmentationSDD();
+       AliITSCalibrationSDD* cal=(AliITSCalibrationSDD*)GetCalibrationModel(fgkDefaultNModulesSPD+1);
+       if(cal->IsAMAt20MHz()){ 
+         seg->SetPadSize(seg->Dpz(0),20.);
+         seg->SetNPads(seg->Npz()/2,128);
+       }
+       SetSegmentationModel(dettype,seg);
+       SetDigitClassName(dettype,"AliITSdigitSDD");
       }
-      SetSegmentationModel(dettype,seg);
-      SetDigitClassName(dettype,"AliITSdigitSDD");
-      SetClusterClassName(dettype,"AliITSRawClusterSDD");
     }
     if(dettype==2){
       AliITSsegmentationSSD* seg2 = new AliITSsegmentationSSD();
       SetSegmentationModel(dettype,seg2);
       SetDigitClassName(dettype,"AliITSdigitSSD");
-      SetClusterClassName(dettype,"AliITSRawClusterSSD");
     }
   }
-  
 }
 //______________________________________________________________________
 Bool_t AliITSDetTypeRec::GetCalibration() {
@@ -435,8 +392,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!fFirstcall){
     AliITSCalibration* cal = GetCalibrationModel(0);
     if(cal)return kTRUE;
-  }
-  else {
+  }else {
     fFirstcall = kFALSE;
   }
 
@@ -449,28 +405,31 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     fCalibration->SetOwner(!cacheStatus);
     fCalibration->Clear();
   }
+    
+  Bool_t retCode=GetCalibrationSPD(cacheStatus);
+  if(retCode==kFALSE) return kFALSE;
+
+  if(fLoadOnlySPDCalib==kFALSE){
+    retCode=GetCalibrationSDD(cacheStatus);
+    if(retCode==kFALSE) return kFALSE;
+    retCode=GetCalibrationSSD(cacheStatus);
+    if(retCode==kFALSE) return kFALSE;
+  }
 
+  AliInfo(Form("%i SPD, %i SDD and %i SSD in calibration database",
+              fNMod[0], fNMod[1], fNMod[2]));
+  return kTRUE;
+}
+//______________________________________________________________________
+Bool_t AliITSDetTypeRec::GetCalibrationSPD(Bool_t cacheStatus) {
+  // Get SPD calibration objects from OCDB
   // dead pixel are not used for local reconstruction
+
   AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDNoisy");
   AliCDBEntry *deadSPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead");
-  AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD");
- //  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
-  AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
-  AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
-  AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
-  AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD");
-  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
-  AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD");
-  AliCDBEntry *drSpSDD = AliCDBManager::Instance()->Get("ITS/Calib/DriftSpeedSDD");
-  AliCDBEntry *ddlMapSDD = AliCDBManager::Instance()->Get("ITS/Calib/DDLMapSDD");
-  AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
-  AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
-
-  if(!entrySPD || !deadSPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || 
-     !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD || !mapTSDD ){
-    AliFatal("Calibration object retrieval failed! ");
+  AliCDBEntry *fastOrSPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDFastOr");
+  if(!entrySPD || !deadSPD || !fastOrSPD ){
+    AliFatal("SPD Calibration object retrieval failed! ");
     return kFALSE;
   }    
 
@@ -482,9 +441,52 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)deadSPD->SetObject(NULL);
   deadSPD->SetOwner(kTRUE);
 
-  AliITSresponseSPD *pSPD = (AliITSresponseSPD*)entry2SPD->GetObject();
-  if(!cacheStatus)entry2SPD->SetObject(NULL);
-  entry2SPD->SetOwner(kTRUE);
+  AliITSFastOrCalibrationSPD *calfastOrSPD = (AliITSFastOrCalibrationSPD *)fastOrSPD->GetObject();
+  if(!cacheStatus)fastOrSPD->SetObject(NULL);
+  fastOrSPD->SetOwner(kTRUE);
+
+  if(!cacheStatus){
+    delete entrySPD;
+    delete deadSPD;
+    delete fastOrSPD;
+  }
+  if ((!calSPD) || (!caldeadSPD) || (!calfastOrSPD)){ 
+    AliWarning("Can not get SPD calibration from calibration database !");
+    return kFALSE;
+  }
+
+  fNMod[0] = calSPD->GetEntries();
+
+  AliITSCalibration* cal;
+  for (Int_t i=0; i<fNMod[0]; i++) {
+    cal = (AliITSCalibration*) calSPD->At(i);
+    SetCalibrationModel(i, cal);
+    cal = (AliITSCalibration*) caldeadSPD->At(i);
+    SetSPDDeadModel(i, cal);
+  }
+  fSPDFastOr = calfastOrSPD;
+
+  return kTRUE;
+}
+
+//______________________________________________________________________
+Bool_t AliITSDetTypeRec::GetCalibrationSDD(Bool_t cacheStatus) {
+  // Get SDD calibration objects from OCDB
+
+  AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD");
+  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
+  AliCDBEntry *drSpSDD = AliCDBManager::Instance()->Get("ITS/Calib/DriftSpeedSDD");
+  AliCDBEntry *ddlMapSDD = AliCDBManager::Instance()->Get("ITS/Calib/DDLMapSDD");
+  AliCDBEntry *hltforSDD = AliCDBManager::Instance()->Get("ITS/Calib/HLTforSDD");
+  //   AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
+  AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
+
+  if(!entrySDD || !entry2SDD || !drSpSDD || !ddlMapSDD || !hltforSDD || !mapTSDD ){
+    AliFatal("SDD Calibration object retrieval failed! ");
+    return kFALSE;
+  }    
+
+
     
   TObjArray *calSDD = (TObjArray *)entrySDD->GetObject();
   if(!cacheStatus)entrySDD->SetObject(NULL);
@@ -502,14 +504,90 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)ddlMapSDD->SetObject(NULL);
   ddlMapSDD->SetOwner(kTRUE);
 
-  TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
-  if(!cacheStatus)mapASDD->SetObject(NULL);
-  mapASDD->SetOwner(kTRUE);
+  AliITSHLTforSDD* hltsdd=(AliITSHLTforSDD*)hltforSDD->GetObject();
+  if(!cacheStatus)hltforSDD->SetObject(NULL);
+  hltforSDD->SetOwner(kTRUE);
+  
+//   TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
+//   if(!cacheStatus)mapASDD->SetObject(NULL);
+//   mapASDD->SetOwner(kTRUE);
 
   TObjArray *mapT = (TObjArray *)mapTSDD->GetObject();
   if(!cacheStatus)mapTSDD->SetObject(NULL);
   mapTSDD->SetOwner(kTRUE);
 
+
+  // DB entries are deleted. In this way metadeta objects are deleted as well
+  if(!cacheStatus){
+    delete entrySDD;
+    delete entry2SDD;
+    //delete mapASDD;
+    delete hltforSDD;
+    delete mapTSDD;
+    delete drSpSDD;
+    delete ddlMapSDD;
+  }
+
+  if ((!pSDD)||(!calSDD) || (!drSp) || (!ddlsdd) || (!hltsdd) || (!mapT) ){
+    AliWarning("Can not get SDD calibration from calibration database !");
+    return kFALSE;
+  }
+
+  fNMod[1] = calSDD->GetEntries();
+
+  fDDLMapSDD=ddlsdd;
+  fRespSDD=pSDD;
+  fIsHLTmodeC=hltsdd->IsHLTmodeC();
+  AliITSCalibration* cal;
+  Float_t avegain=0.;
+  Float_t nGdAnodes=0;
+  for(Int_t iddl=0; iddl<AliITSDDLModuleMapSDD::GetNDDLs(); iddl++){
+    for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
+      Int_t iMod=fDDLMapSDD->GetModuleNumber(iddl,icar);
+      if(iMod==-1) continue;
+      Int_t i=iMod - fgkDefaultNModulesSPD;
+      cal = (AliITSCalibration*) calSDD->At(i);
+      Int_t i0=2*i;
+      Int_t i1=1+2*i;
+      for(Int_t iAnode=0;iAnode< ((AliITSCalibrationSDD*)cal)->NOfAnodes(); iAnode++){
+       if(((AliITSCalibrationSDD*)cal)->IsBadChannel(iAnode)) continue;
+       avegain+= ((AliITSCalibrationSDD*)cal)->GetChannelGain(iAnode);
+       nGdAnodes++;
+      }
+      AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
+      //      AliITSMapSDD* ma0 = (AliITSMapSDD*)mapAn->At(i0);
+      AliITSMapSDD* mt0 = (AliITSMapSDD*)mapT->At(i0);
+      AliITSDriftSpeedArraySDD* arr1 = (AliITSDriftSpeedArraySDD*) drSp->At(i1);
+      //      AliITSMapSDD* ma1 = (AliITSMapSDD*)mapAn->At(i1);
+      AliITSMapSDD* mt1 = (AliITSMapSDD*)mapT->At(i1);
+      cal->SetDriftSpeed(0,arr0);
+      cal->SetDriftSpeed(1,arr1);
+//       cal->SetMapA(0,ma0);
+//       cal->SetMapA(1,ma1);
+      cal->SetMapT(0,mt0);
+      cal->SetMapT(1,mt1);
+      SetCalibrationModel(iMod, cal);
+    }
+  }
+  if(nGdAnodes) fAveGainSDD=avegain/nGdAnodes;
+  return kTRUE;
+}
+
+
+//______________________________________________________________________
+Bool_t AliITSDetTypeRec::GetCalibrationSSD(Bool_t cacheStatus) {
+  // Get SSD calibration objects from OCDB
+  //  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
+
+  AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
+  AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
+  AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
+
+  if(!entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD){
+    AliFatal("SSD Calibration object retrieval failed! ");
+    return kFALSE;
+  }    
+
   TObject *emptyssd = 0; TString ssdobjectname = 0;
   AliITSNoiseSSDv2 *noiseSSD = new AliITSNoiseSSDv2();  
   emptyssd = (TObject *)entryNoiseSSD->GetObject();
@@ -547,153 +625,26 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)entryBadChannelsSSD->SetObject(NULL);
   entryBadChannelsSSD->SetOwner(kTRUE);
 
-  AliITSresponseSSD *pSSD = (AliITSresponseSSD*)entry2SSD->GetObject();
-  if(!cacheStatus)entry2SSD->SetObject(NULL);
-  entry2SSD->SetOwner(kTRUE);
-
   // DB entries are deleted. In this way metadeta objects are deleted as well
   if(!cacheStatus){
-    delete entrySPD;
-    delete deadSPD;
-    delete entrySDD;
     delete entryNoiseSSD;
     delete entryGainSSD;
     delete entryBadChannelsSSD;
-    delete entry2SPD;
-    delete entry2SDD;
-    delete entry2SSD;
-    delete mapASDD;
-    delete mapTSDD;
-    delete drSpSDD;
-    delete ddlMapSDD;
   }
 
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!caldeadSPD) ||(!calSDD) || (!drSp) || (!ddlsdd)
-      || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
-    AliWarning("Can not get calibration from calibration database !");
+  if ((!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
+    AliWarning("Can not get SSD calibration from calibration database !");
     return kFALSE;
   }
 
-  fNMod[0] = calSPD->GetEntries();
-  fNMod[1] = calSDD->GetEntries();
-  //fNMod[2] = noiseSSD->GetEntries();
-  AliInfo(Form("%i SPD, %i SDD and %i SSD in calibration database",
-              fNMod[0], fNMod[1], fNMod[2]));
-  AliITSCalibration* cal;
-  for (Int_t i=0; i<fNMod[0]; i++) {
-    cal = (AliITSCalibration*) calSPD->At(i);
-    cal->SetResponse((AliITSresponse*)pSPD);
-    SetCalibrationModel(i, cal);
-    cal = (AliITSCalibration*) caldeadSPD->At(i);
-    SetSPDDeadModel(i, cal);
-  }
-
-  fDDLMapSDD=ddlsdd;
-  fRespSDD=pSDD;
-  for(Int_t iddl=0; iddl<AliITSDDLModuleMapSDD::GetNDDLs(); iddl++){
-    for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
-      Int_t iMod=fDDLMapSDD->GetModuleNumber(iddl,icar);
-      if(iMod==-1) continue;
-      Int_t i=iMod - fgkDefaultNModulesSPD;
-      cal = (AliITSCalibration*) calSDD->At(i);
-      Int_t i0=2*i;
-      Int_t i1=1+2*i;
-      AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
-      AliITSMapSDD* ma0 = (AliITSMapSDD*)mapAn->At(i0);
-      AliITSMapSDD* mt0 = (AliITSMapSDD*)mapT->At(i0);
-      AliITSDriftSpeedArraySDD* arr1 = (AliITSDriftSpeedArraySDD*) drSp->At(i1);
-      AliITSMapSDD* ma1 = (AliITSMapSDD*)mapAn->At(i1);
-      AliITSMapSDD* mt1 = (AliITSMapSDD*)mapT->At(i1);
-      cal->SetDriftSpeed(0,arr0);
-      cal->SetDriftSpeed(1,arr1);
-      cal->SetMapA(0,ma0);
-      cal->SetMapA(1,ma1);
-      cal->SetMapT(0,mt0);
-      cal->SetMapT(1,mt1);
-      SetCalibrationModel(iMod, cal);
-    }
-  }
-
-  fSSDCalibration->SetResponse((AliITSresponse*)pSSD);
   fSSDCalibration->SetNoise(noiseSSD);
   fSSDCalibration->SetGain(gainSSD);
   fSSDCalibration->SetBadChannels(badChannelsSSD);
   //fSSDCalibration->FillBadChipMap();
 
-
-  /*
-  for (Int_t i=0; i<fNMod[2]; i++) {
-
-    AliITSCalibrationSSD *calibSSD = new AliITSCalibrationSSD();
-    calibSSD->SetResponse((AliITSresponse*)pSSD);
-    
-    AliITSNoiseSSD *noise = (AliITSNoiseSSD*) (noiseSSD->At(i));
-    calibSSD->SetNoise(noise);
-    AliITSPedestalSSD *pedestal = (AliITSPedestalSSD*) (pedestalSSD->At(i));
-    calibSSD->SetPedestal(pedestal);
-    AliITSGainSSD *gain = (AliITSGainSSD*) (gainSSD->At(i));
-    calibSSD->SetGain(gain);
-    AliITSBadChannelsSSD *bad = (AliITSBadChannelsSSD*) (badchannelsSSD->At(i));
-    calibSSD->SetBadChannels(bad);
-    calibSSD->FillBadChipMap();
-
-    Int_t iMod = i + fgkDefaultNModulesSPD + fgkDefaultNModulesSDD;
-    SetCalibrationModel(iMod, calibSSD);
- }
-  */
-
   return kTRUE;
 }
 
-
-//________________________________________________________________
-void AliITSDetTypeRec::SetDefaultClusterFinders(){
-  
-  //set defaults for standard cluster finder
-
-  if(!GetITSgeom()){
-    Warning("SetDefaults","null pointer to AliITSgeom!");
-    return;
-  }
-
-  AliITSClusterFinder *clf; 
-
-  for(Int_t dettype=0;dettype<fgkNdettypes;dettype++){
-    //SPD
-    if(dettype==0){
-      if(!GetReconstructionModel(dettype)){
-       TClonesArray *dig0 = DigitsAddress(0);
-       TClonesArray *rec0 = ClustersAddress(0);
-       clf = new AliITSClusterFinderSPD(this,dig0,rec0);
-       SetReconstructionModel(dettype,clf);
-
-      }
-    }
-   
-    //SDD
-    if(dettype==1){
-      if(!GetReconstructionModel(dettype)){
-       TClonesArray *dig1 = DigitsAddress(1);
-       TClonesArray *rec1 = ClustersAddress(1);
-       clf = new AliITSClusterFinderSDD(this,dig1,rec1);
-       SetReconstructionModel(dettype,clf);
-      }
-
-    }
-    //SSD
-    if(dettype==2){
-      if(!GetReconstructionModel(dettype)){
-       TClonesArray* dig2 = DigitsAddress(2);
-       clf = new AliITSClusterFinderSSD(this,dig2);
-       SetReconstructionModel(dettype,clf);
-      }
-    }
-
- }
-  
-}
-
 //________________________________________________________________
 void AliITSDetTypeRec::SetDefaultClusterFindersV2(Bool_t rawdata){
 
@@ -755,23 +706,6 @@ void AliITSDetTypeRec::MakeBranch(TTree* tree, Option_t* option){
 
 }
 
-//___________________________________________________________________
-void AliITSDetTypeRec::AddCluster(Int_t id, AliITSRawCluster *c){
-
-  // Adds a raw cluster to the list
-  TClonesArray &lc = *((TClonesArray*)fCtype->At(id));  
-  switch(id){
-  case 0:
-    new(lc[fNctype[id]++]) AliITSRawClusterSPD(*((AliITSRawClusterSPD*)c));
-    break;
-  case 1:
-    new(lc[fNctype[id]++]) AliITSRawClusterSDD(*((AliITSRawClusterSDD*)c));
-    break;
-  case 2:
-    new(lc[fNctype[id]++]) AliITSRawClusterSSD(*((AliITSRawClusterSSD*)c));
-    break;
-  } 
-}
 //___________________________________________________________________
 void AliITSDetTypeRec::ResetDigits(){
   // Reset number of digits and the digits array for the ITS detector.
@@ -786,27 +720,8 @@ void AliITSDetTypeRec::ResetDigits(Int_t branch){
   // Reset number of digits and the digits array for this branch.
   
   if(fDigits->At(branch)) ((TClonesArray*)fDigits->At(branch))->Clear();
-  if(fNdtype) fNdtype[branch]=0;
 
 }
-
-//__________________________________________________________________
-void AliITSDetTypeRec::ResetClusters(){
-
-  //Resets number of clusters and the cluster array 
-  for(Int_t i=0;i<fgkNdettypes;i++){
-    ResetClusters(i);
-  }
-}
-
-//__________________________________________________________________
-void AliITSDetTypeRec::ResetClusters(Int_t i){
-
-  //Resets number of clusters and the cluster array for this branch
-
-  if (fCtype->At(i))    ((TClonesArray*)fCtype->At(i))->Clear();
-  if (fNctype)  fNctype[i]=0;
-}
 //__________________________________________________________________
 void AliITSDetTypeRec::MakeBranchR(TTree *treeR, Option_t *opt){
 
@@ -879,7 +794,7 @@ void AliITSDetTypeRec::AddRecPoint(const AliITSRecPoint &r){
 }
 
 //______________________________________________________________________
-void AliITSDetTypeRec::DigitsToRecPoints(TTree *treeD,TTree *treeR,Int_t lastentry,Option_t *opt, Bool_t v2){
+void AliITSDetTypeRec::DigitsToRecPoints(TTree *treeD,TTree *treeR,Int_t lastentry,Option_t *opt, Int_t optCluFind){
   // cluster finding and reconstruction of space points
   // the condition below will disappear when the geom class will be
   // initialized for all versions - for the moment it is only for v5 !
@@ -896,13 +811,12 @@ void AliITSDetTypeRec::DigitsToRecPoints(TTree *treeD,TTree *treeR,Int_t lastent
   const char *all = strstr(opt,"All");
   const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
                         strstr(opt,"SSD")};
-  if(!v2) {
-    SetDefaultClusterFinders();
-    AliInfo("Original cluster finder has been selected\n");
-  }
-  else   { 
+  if(optCluFind==0){
     SetDefaultClusterFindersV2();
     AliInfo("V2 cluster finder has been selected \n");
+  }else{
+    SetDefaultClusterFindersV2();
+    AliInfo("Cluster Finder Option not implemented, V2 cluster finder will be used \n");    
   }
 
   AliITSClusterFinder *rec     = 0;
@@ -930,7 +844,6 @@ void AliITSDetTypeRec::DigitsToRecPoints(TTree *treeD,TTree *treeR,Int_t lastent
       } // end if
       treeR->Fill();
       ResetRecPoints();
-      ResetClusters();
   } 
 }
 //______________________________________________________________________
@@ -949,7 +862,7 @@ void AliITSDetTypeRec::DigitsToRecPoints(AliRawReader* rawReader,TTree *treeR,Op
   const char *all = strstr(opt,"All");
   const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
                         strstr(opt,"SSD")};
-  AliITSClusterFinderV2 *rec     = 0;
+  AliITSClusterFinder *rec     = 0;
   Int_t id=0;
 
   TClonesArray *array=new TClonesArray("AliITSRecPoint",1000);
@@ -962,9 +875,9 @@ void AliITSDetTypeRec::DigitsToRecPoints(AliRawReader* rawReader,TTree *treeR,Op
   }
   for(id=0;id<3;id++){
     if (!all && !det[id]) continue;
-    rec = (AliITSClusterFinderV2*)GetReconstructionModel(id);
+    rec = (AliITSClusterFinder*)GetReconstructionModel(id);
     if (!rec)
-      AliFatal("The reconstruction class was not instanciated");
+      AliFatal("The reconstruction class was not instantiated");
     rec->SetDetTypeRec(this);
     rec->RawdataToClusters(rawReader,clusters);    
   } 
@@ -1002,12 +915,12 @@ void AliITSDetTypeRec::ReadOldSSDNoise(TObjArray *array,
   const Int_t fgkSSDSTRIPSPERMODULE = 1536;
   const Int_t fgkSSDPSIDESTRIPSPERMODULE = 768;
 
-  Int_t fNMod = array->GetEntries();
+  Int_t gNMod = array->GetEntries();
   cout<<"Converting old calibration object for noise..."<<endl;
 
   //NOISE
   Double_t noise = 0.0;
-  for (Int_t iModule = 0; iModule < fNMod; iModule++) {
+  for (Int_t iModule = 0; iModule < gNMod; iModule++) {
     AliITSNoiseSSD *noiseModule = (AliITSNoiseSSD*) (array->At(iModule));
     for(Int_t iStrip = 0; iStrip < fgkSSDSTRIPSPERMODULE; iStrip++) {
       noise = (iStrip < fgkSSDPSIDESTRIPSPERMODULE) ? noiseModule->GetNoiseP(iStrip) : noiseModule->GetNoiseN(1535 - iStrip);
@@ -1023,9 +936,9 @@ void AliITSDetTypeRec::ReadOldSSDNoise(TObjArray *array,
 void AliITSDetTypeRec::ReadOldSSDBadChannels(TObjArray *array, 
                                             AliITSBadChannelsSSDv2 *badChannelsSSD) {
   //Reads the old SSD calibration object and converts it to the new format
-  Int_t fNMod = array->GetEntries();
+  Int_t gNMod = array->GetEntries();
   cout<<"Converting old calibration object for bad channels..."<<endl;
-  for (Int_t iModule = 0; iModule < fNMod; iModule++) {
+  for (Int_t iModule = 0; iModule < gNMod; iModule++) {
     //for (Int_t iModule = 0; iModule < 1; iModule++) {
     AliITSBadChannelsSSD *bad = (AliITSBadChannelsSSD*) (array->At(iModule));
     TArrayI arrayPSide = bad->GetBadPChannelsList();
@@ -1048,11 +961,11 @@ void AliITSDetTypeRec::ReadOldSSDGain(TObjArray *array,
                                      AliITSGainSSDv2 *gainSSD) {
   //Reads the old SSD calibration object and converts it to the new format
 
-  Int_t fNMod = array->GetEntries();
+  Int_t gNMod = array->GetEntries();
   cout<<"Converting old calibration object for gain..."<<endl;
 
   //GAIN
-  for (Int_t iModule = 0; iModule < fNMod; iModule++) {
+  for (Int_t iModule = 0; iModule < gNMod; iModule++) {
     AliITSGainSSD *gainModule = (AliITSGainSSD*) (array->At(iModule));
     TArrayF arrayPSide = gainModule->GetGainP();
     for(Int_t iPCounter = 0; iPCounter < arrayPSide.GetSize(); iPCounter++)