]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeRec.cxx
FindDATE + ITS module
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
diff --git a/ITS/AliITSDetTypeRec.cxx b/ITS/AliITSDetTypeRec.cxx
deleted file mode 100644 (file)
index afeb70d..0000000
+++ /dev/null
@@ -1,1242 +0,0 @@
-/***************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * 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   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-
-
-////////////////////////////////////////////////////////////////////////
-// This class defines the "Standard" reconstruction for the ITS       // 
-// detector.                                                          //
-//                                                                    //
-////////////////////////////////////////////////////////////////////////
-#include "TObjArray.h"
-#include "TTree.h"
-
-#include "AliCDBManager.h"
-#include "AliCDBEntry.h"
-#include "AliITSClusterFinder.h"
-#include "AliITSClusterFinderV2SPD.h"
-#include "AliITSClusterFinderV2SDD.h"
-#include "AliITSClusterFinderSDDfast.h"
-#include "AliITSClusterFinderV2SSD.h"
-#include "AliITSDetTypeRec.h"
-#include "AliITSDDLModuleMapSDD.h"
-#include "AliITSRecPoint.h"
-#include "AliITSRecPointContainer.h"
-#include "AliITSCalibrationSDD.h"
-#include "AliITSMapSDD.h"
-#include "AliITSCalibrationSSD.h"
-#include "AliITSNoiseSSDv2.h"
-#include "AliITSGainSSDv2.h"
-#include "AliITSBadChannelsSSDv2.h"
-#include "AliITSNoiseSSD.h"
-#include "AliITSGainSSD.h"
-#include "AliITSBadChannelsSSD.h"
-#include "AliITSresponseSDD.h"
-#include "AliITSsegmentationSPD.h"
-#include "AliITSsegmentationSDD.h"
-#include "AliITSsegmentationSSD.h"
-#include "AliLog.h"
-#include "AliITSRawStreamSPD.h"
-#include "AliITSTriggerConditions.h"
-#include "AliITSFOSignalsSPD.h"
-#include "AliRunLoader.h"
-#include "AliDataLoader.h"
-#include "AliITSLoader.h"
-
-
-class AliITSDriftSpeedArraySDD;
-class AliITSCorrMapSDD;
-class AliITSRecoParam;
-
-const Int_t AliITSDetTypeRec::fgkNdettypes = 3;
-const Int_t AliITSDetTypeRec::fgkDefaultNModulesSPD =  240;
-const Int_t AliITSDetTypeRec::fgkDefaultNModulesSDD =  260;
-const Int_t AliITSDetTypeRec::fgkDefaultNModulesSSD = 1698;
-
-ClassImp(AliITSDetTypeRec)
-
-//________________________________________________________________
-AliITSDetTypeRec::AliITSDetTypeRec(): TObject(),
-fNMod(0),
-fITSgeom(0),
-fReconstruction(0),
-fSegmentation(0),
-fCalibration(0),
-fSSDCalibration(0),
-fSPDDead(0),
-fSPDSparseDead(0),
-fTriggerConditions(0),
-fDigits(0),
-fFOSignals(0),
-fDDLMapSDD(0),
-fRespSDD(0),
-fAveGainSDD(0),
-fRecPoints(0),
-fNRecPoints(0),
-fFirstcall(kTRUE),
-fLoadOnlySPDCalib(0),
-fFastOrFiredMap(1200){
-    // Standard Constructor
-    // Inputs:
-    //    none.
-    // Outputs:
-    //    none.
-    // Return:
-    //   
-
-  fReconstruction = new TObjArray(fgkNdettypes);
-  fDigits = new TObjArray(fgkNdettypes);
-  for(Int_t i=0; i<3; i++){
-    fkDigClassName[i]=0;
-  }
-  fSSDCalibration=new AliITSCalibrationSSD();
-  fNMod = new Int_t [fgkNdettypes];
-  fNMod[0] = fgkDefaultNModulesSPD;
-  fNMod[1] = fgkDefaultNModulesSDD;
-  fNMod[2] = fgkDefaultNModulesSSD;
-  fNRecPoints = 0;
-  
-  
-}
-
-//______________________________________________________________________
-AliITSDetTypeRec::AliITSDetTypeRec(const AliITSDetTypeRec & rec):TObject(rec),
-fNMod(rec.fNMod),
-fITSgeom(rec.fITSgeom),
-fReconstruction(rec.fReconstruction),
-fSegmentation(rec.fSegmentation),
-fCalibration(rec.fCalibration),
-fSSDCalibration(rec.fSSDCalibration),
-fSPDDead(rec.fSPDDead),
-fSPDSparseDead(rec.fSPDSparseDead),
-fTriggerConditions(rec.fTriggerConditions),
-fDigits(rec.fDigits),
-fFOSignals(rec.fFOSignals),
-fDDLMapSDD(rec.fDDLMapSDD),
-fRespSDD(rec.fRespSDD),
-fAveGainSDD(rec.fAveGainSDD),
-fRecPoints(rec.fRecPoints),
-fNRecPoints(rec.fNRecPoints),
-fFirstcall(rec.fFirstcall),
-fLoadOnlySPDCalib(rec.fLoadOnlySPDCalib),
-fFastOrFiredMap(rec.fFastOrFiredMap){
-
-  // Copy constructor. 
-  for(Int_t i=0; i<3; i++){    
-    fkDigClassName[i]=rec.fkDigClassName[i];  // NB only copies Char_t*, so not so safe, but this code should never be reached anyways
-  }
-}
-//______________________________________________________________________
-AliITSDetTypeRec& AliITSDetTypeRec::operator=(const AliITSDetTypeRec& source){
-    // Assignment operator. 
-    this->~AliITSDetTypeRec();
-    new(this) AliITSDetTypeRec(source);
-    return *this;
-
-}
-
-//_____________________________________________________________________
-AliITSDetTypeRec::~AliITSDetTypeRec(){
-  //Destructor
-
-  if(fReconstruction){
-    fReconstruction->Delete();
-    delete fReconstruction;
-  }
-  if(fSegmentation){
-    fSegmentation->Delete();
-    delete fSegmentation;
-  }
-  if(fCalibration){
-    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      fCalibration->Delete();
-      delete fCalibration;
-      if(fRespSDD) delete fRespSDD;
-      if(fDDLMapSDD) delete fDDLMapSDD;
-   }
-  }
-  if(fSSDCalibration){
-    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      delete fSSDCalibration;
-    }
-  }
-   if(fSPDDead){
-    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      fSPDDead->Delete();
-      delete fSPDDead;
-    }
-  } 
-     if(fSPDSparseDead){
-    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      fSPDSparseDead->Delete();
-      delete fSPDSparseDead;
-    }
-  } 
-  if(fTriggerConditions){
-    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
-      fTriggerConditions->Delete();
-      delete fTriggerConditions;
-    }
-  } 
-  if(fDigits){
-    fDigits->Delete();
-    delete fDigits;
-  }
-  if(fRecPoints){
-    fRecPoints->Delete();
-    delete fRecPoints;
-  }
-  delete [] fNMod;
-  
-  if (fITSgeom) delete fITSgeom;
-}
-
-//___________________________________________________________________
-void AliITSDetTypeRec::SetReconstructionModel(Int_t dettype,AliITSClusterFinder *clf){
-
-  //Set reconstruction model for detector type
-
-  if(fReconstruction==0) fReconstruction = new TObjArray(fgkNdettypes);
-  if(fReconstruction->At(dettype)!=0) delete fReconstruction->At(dettype);
-  fReconstruction->AddAt(clf,dettype);
-}
-//______________________________________________________________________
-AliITSClusterFinder* AliITSDetTypeRec::GetReconstructionModel(Int_t dettype) const{
-
-  //Get reconstruction model for detector type
-  if(fReconstruction==0)  {
-    Warning("GetReconstructionModel","fReconstruction is 0!");
-    return 0;     
-  }
-  return (AliITSClusterFinder*)fReconstruction->At(dettype);
-}
-
-//______________________________________________________________________
-void AliITSDetTypeRec::SetSegmentationModel(Int_t dettype,AliITSsegmentation *seg){
-   
-  //Set segmentation model for detector type
-  
-  if(fSegmentation==0) fSegmentation = new TObjArray(fgkNdettypes);
-  if(fSegmentation->At(dettype)!=0) delete fSegmentation->At(dettype);
-  fSegmentation->AddAt(seg,dettype);
-
-}
-//______________________________________________________________________
-AliITSsegmentation* AliITSDetTypeRec::GetSegmentationModel(Int_t dettype) const {
-
-  //Get segmentation model for detector type
-   
-   if(fSegmentation==0) {
-     Warning("GetSegmentationModel","fSegmentation is 0!");
-     return 0; 
-   } 
-   return (AliITSsegmentation*)fSegmentation->At(dettype);
-
-}
-//_______________________________________________________________________
-void AliITSDetTypeRec::SetCalibrationModel(Int_t iMod, AliITSCalibration *cal){
-
-  //Set calibration (response) for the module iMod of type dettype
-  if (fCalibration==0) {
-    fCalibration = new TObjArray(GetITSgeom()->GetIndexMax());
-    fCalibration->SetOwner(kTRUE);
-    fCalibration->Clear();
-  }
-
-  if (fCalibration->At(iMod) != 0)
-    delete (AliITSCalibration*) fCalibration->At(iMod);
-  fCalibration->AddAt(cal,iMod);
-
-}
-//_______________________________________________________________________
-void AliITSDetTypeRec::SetSPDDeadModel(Int_t iMod, AliITSCalibration *cal){
-
-  //Set dead pixel info for the SPD module iMod
-  if (fSPDDead==0) {
-    fSPDDead = new TObjArray(fgkDefaultNModulesSPD);
-    fSPDDead->SetOwner(kTRUE);
-    fSPDDead->Clear();
-  }
-
-  if (fSPDDead->At(iMod) != 0)
-    delete (AliITSCalibration*) fSPDDead->At(iMod);
-  fSPDDead->AddAt(cal,iMod);
-}
-//_______________________________________________________________________
-void AliITSDetTypeRec::SetSPDSparseDeadModel(Int_t iMod, AliITSCalibration *cal){
-
-  //Set dead pixel info for the SPD ACTIVE module iMod
-  if (fSPDSparseDead==0) {
-    fSPDSparseDead = new TObjArray(fgkDefaultNModulesSPD);
-    fSPDSparseDead->SetOwner(kTRUE);
-    fSPDSparseDead->Clear();
-  }
-
-  if (fSPDSparseDead->At(iMod) != 0)
-    delete (AliITSCalibration*) fSPDSparseDead->At(iMod);
-  fSPDSparseDead->AddAt(cal,iMod);
-}
-//_______________________________________________________________________
-AliITSCalibration* AliITSDetTypeRec::GetCalibrationModel(Int_t iMod) const {
-  
-  //Get calibration model for module type
-  
-  if(fCalibration==0) {
-    Warning("GetalibrationModel","fCalibration is 0!");
-    return 0; 
-  }  
-
-  if(iMod<fgkDefaultNModulesSPD+fgkDefaultNModulesSDD){
-    return (AliITSCalibration*)fCalibration->At(iMod);
-  }else{
-    Int_t i=iMod-(fgkDefaultNModulesSPD+fgkDefaultNModulesSDD);
-    fSSDCalibration->SetModule(i);
-    return (AliITSCalibration*)fSSDCalibration;
-  }
-
-}
-//_______________________________________________________________________
-AliITSCalibration* AliITSDetTypeRec::GetSPDDeadModel(Int_t iMod) const {
-  
-  //Get SPD dead for module iMod
-  
-  if(fSPDDead==0) {
-    AliWarning("fSPDDead is 0!");
-    return 0; 
-  }  
-  return (AliITSCalibration*)fSPDDead->At(iMod);
-}
-//_______________________________________________________________________
-AliITSCalibration* AliITSDetTypeRec::GetSPDSparseDeadModel(Int_t iMod) const {
-  
-  //Get SPD dead for module iMod
-  
-  if(fSPDSparseDead==0) {
-    AliWarning("fSPDSparseDead is 0!");
-    return 0; 
-  }  
-  return (AliITSCalibration*)fSPDSparseDead->At(iMod);
-}
-//_______________________________________________________________________
-AliITSTriggerConditions* AliITSDetTypeRec::GetTriggerConditions() const {
-  //Get Pixel Trigger Conditions
-  if (fTriggerConditions==0) {
-    AliWarning("fTriggerConditions is 0!");
-  }
-  return fTriggerConditions;
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::SetTreeAddressD(TTree* const treeD){
-    // Set branch address for the tree of digits.
-
-  const char *det[4] = {"SPD","SDD","SSD","ITS"};
-  TBranch *branch;
-  const Char_t* digclass;
-  Int_t i;
-  char branchname[30];
-
-  if(!treeD) return;
-  if (fDigits == 0x0) {
-    fDigits = new TObjArray(fgkNdettypes);
-  }
-  else {
-    ResetDigits();
-  }
-  for (i=0; i<fgkNdettypes; i++) {
-    digclass = GetDigitClassName(i);
-    fDigits->AddAt(new TClonesArray(digclass,1000),i); 
-    if (fgkNdettypes==3) snprintf(branchname,29,"%sDigits%s",det[3],det[i]);
-    else  snprintf(branchname,29,"%sDigits%d",det[3],i+1);
-    branch = treeD->GetBranch(branchname);
-    if (branch) branch->SetAddress(&((*fDigits)[i]));
-  } 
-
-}
-
-//_______________________________________________________________________
-TBranch* AliITSDetTypeRec::MakeBranchInTree(TTree* const tree, 
-                           const char* name, const char *classname, 
-                           void* address,Int_t size,Int_t splitlevel)
-{ 
-//
-// Makes branch in given tree and diverts them to a separate file
-// 
-//
-//
-    
-  if (tree == 0x0) {
-    Error("MakeBranchInTree","Making Branch %s Tree is NULL",name);
-    return 0x0;
-  }
-  TBranch *branch = tree->GetBranch(name);
-  if (branch) {  
-    return branch;
-  }
-  if (classname){
-    branch = tree->Branch(name,classname,address,size,splitlevel);
-  }
-  else {
-    branch = tree->Bronch(name, "TClonesArray", address, size, splitlevel);
-  }
-  
-  return branch;
-}
-
-//____________________________________________________________________
-void AliITSDetTypeRec::SetDefaults(){
-  
-  //Set defaults for segmentation and response
-
-  if(!GetITSgeom()){
-    Warning("SetDefaults","null pointer to AliITSgeomGeom !");
-    return;
-  }
-
-  AliITSsegmentation* seg;
-  if(!GetCalibration()) {AliFatal("Exit");exit(0);}  
-
-  for(Int_t dettype=0;dettype<fgkNdettypes;dettype++){
-    if(dettype==0){
-      seg = new AliITSsegmentationSPD();
-      SetSegmentationModel(dettype,seg);
-      SetDigitClassName(dettype,"AliITSdigitSPD");
-    }
-    if(dettype==1){
-      seg = new AliITSsegmentationSDD();
-      if(fLoadOnlySPDCalib==kFALSE){
-       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");
-    }
-    if(dettype==2){
-      AliITSsegmentationSSD* seg2 = new AliITSsegmentationSSD();
-      SetSegmentationModel(dettype,seg2);
-      SetDigitClassName(dettype,"AliITSdigitSSD");
-    }
-  }
-}
-//______________________________________________________________________
-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;
-  }
-
-  //  SetRunNumber((Int_t)AliCDBManager::Instance()->GetRun());
-  //  Int_t run=GetRunNumber();
-
-  Bool_t cacheStatus = AliCDBManager::Instance()->GetCacheFlag();
-  if (fCalibration==0) {
-    fCalibration = new TObjArray(GetITSgeom()->GetIndexMax());
-    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 *noisySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDNoisy");
-  AliCDBEntry *deadSPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead");
-  AliCDBEntry *deadSparseSPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDSparseDead");
-  AliCDBEntry *pitCond = AliCDBManager::Instance()->Get("TRIGGER/SPD/PITConditions");
-  if(!noisySPD || !deadSPD || !pitCond ){
-    AliFatal("SPD Calibration object retrieval failed! ");
-    return kFALSE;
-  }
-
-  TObjArray *calNoisySPD = (TObjArray*) noisySPD->GetObject();
-  if (!cacheStatus) noisySPD->SetObject(NULL);
-  noisySPD->SetOwner(kTRUE);
-  TObjArray *calDeadSPD = (TObjArray*) deadSPD->GetObject();
-  if (!cacheStatus) deadSPD->SetObject(NULL);
-  deadSPD->SetOwner(kTRUE);
-
-  TObjArray *calSparseDeadSPD = (TObjArray*) deadSparseSPD->GetObject();
-  if (!cacheStatus) deadSparseSPD->SetObject(NULL);
-  deadSparseSPD->SetOwner(kTRUE);
-
-  
-  AliITSTriggerConditions *calPitCond = (AliITSTriggerConditions*) pitCond->GetObject();
-  if (!cacheStatus) pitCond->SetObject(NULL);
-  pitCond->SetOwner(kTRUE);
-
-  if(!cacheStatus){
-    delete noisySPD;
-    delete deadSPD;
-    delete deadSparseSPD;
-    delete pitCond;
-  }
-  if ((!calNoisySPD) || (!calDeadSPD) || (!calSparseDeadSPD) || (!calPitCond)){ 
-    AliWarning("Can not get SPD calibration from calibration database !");
-    return kFALSE;
-  }
-  fNMod[0] = calNoisySPD->GetEntries();
-
-  AliITSCalibration* cal;
-  for (Int_t i=0; i<fNMod[0]; i++) {
-    cal = (AliITSCalibration*) calNoisySPD->At(i);
-    SetCalibrationModel(i, cal);
-    cal = (AliITSCalibration*) calDeadSPD->At(i);
-    SetSPDDeadModel(i, cal);
-    cal = (AliITSCalibration*) calSparseDeadSPD->At(i);
-    SetSPDSparseDeadModel(i, cal);
-  }
-  fTriggerConditions = calPitCond;
-
-  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 *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
-  AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
-
-  if(!entrySDD || !entry2SDD || !drSpSDD || !ddlMapSDD || !mapTSDD ){
-    AliFatal("SDD Calibration object retrieval failed! ");
-    return kFALSE;
-  }    
-
-
-    
-  TObjArray *calSDD = (TObjArray *)entrySDD->GetObject();
-  if(!cacheStatus)entrySDD->SetObject(NULL);
-  entrySDD->SetOwner(kTRUE);
-  AliITSresponseSDD *pSDD = (AliITSresponseSDD*)entry2SDD->GetObject();
-  if(!cacheStatus)entry2SDD->SetObject(NULL);
-  entry2SDD->SetOwner(kTRUE);
-
-  TObjArray *drSp = (TObjArray *)drSpSDD->GetObject();
-  if(!cacheStatus)drSpSDD->SetObject(NULL);
-  drSpSDD->SetOwner(kTRUE);
-
-  AliITSDDLModuleMapSDD *ddlsdd=(AliITSDDLModuleMapSDD*)ddlMapSDD->GetObject();
-  if(!cacheStatus)ddlMapSDD->SetObject(NULL);
-  ddlMapSDD->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 mapTSDD;
-    delete drSpSDD;
-    delete ddlMapSDD;
-  }
-
-  if ((!pSDD)||(!calSDD) || (!drSp) || (!ddlsdd) || (!mapT) ){
-    AliWarning("Can not get SDD calibration from calibration database !");
-    return kFALSE;
-  }
-
-  fNMod[1] = calSDD->GetEntries();
-
-  fDDLMapSDD=ddlsdd;
-  fRespSDD=pSDD;
-  AliITSCalibration* cal;
-  Float_t avegain=0.;
-  Float_t nGdAnodes=0;
-  Bool_t oldMapFormat=kFALSE;
-  TObject* objmap=(TObject*)mapT->At(0);
-  TString cname(objmap->ClassName());
-  if(cname.CompareTo("AliITSMapSDD")==0){ 
-    oldMapFormat=kTRUE;
-    AliInfo("SDD Maps converted to new format");
-  }
-  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);
-      AliITSDriftSpeedArraySDD* arr1 = (AliITSDriftSpeedArraySDD*) drSp->At(i1);
-
-      AliITSCorrMapSDD* mt0 = 0;
-      AliITSCorrMapSDD* mt1 = 0;
-      if(oldMapFormat){ 
-       AliITSMapSDD* oldmap0=(AliITSMapSDD*)mapT->At(i0);
-       AliITSMapSDD* oldmap1=(AliITSMapSDD*)mapT->At(i1);
-       mt0=oldmap0->ConvertToNewFormat();
-       mt1=oldmap1->ConvertToNewFormat();
-      }else{
-       mt0=(AliITSCorrMapSDD*)mapT->At(i0);
-       mt1=(AliITSCorrMapSDD*)mapT->At(i1);
-      }
-      cal->SetDriftSpeed(0,arr0);
-      cal->SetDriftSpeed(1,arr1);
-      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;
-  AliITSNoiseSSDv2 *noiseSSD = NULL; 
-  emptyssd = (TObject *)entryNoiseSSD->GetObject();
-  ssdobjectname = emptyssd->GetName();
-  if(ssdobjectname=="TObjArray") {
-    TObjArray *noiseSSDOld = (TObjArray *)entryNoiseSSD->GetObject();
-    noiseSSD = new AliITSNoiseSSDv2(); 
-    ReadOldSSDNoise(noiseSSDOld, noiseSSD);
-  }
-  else if(ssdobjectname=="AliITSNoiseSSDv2")
-    noiseSSD = (AliITSNoiseSSDv2 *)entryNoiseSSD->GetObject();
-  if(!cacheStatus)entryNoiseSSD->SetObject(NULL);
-  entryNoiseSSD->SetOwner(kTRUE);
-
-  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")
-    gainSSD = (AliITSGainSSDv2 *)entryGainSSD->GetObject();
-  if(!cacheStatus)entryGainSSD->SetObject(NULL);
-  entryGainSSD->SetOwner(kTRUE);
-
-  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")
-    badChannelsSSD = (AliITSBadChannelsSSDv2*)entryBadChannelsSSD->GetObject();
-  if(!cacheStatus)entryBadChannelsSSD->SetObject(NULL);
-  entryBadChannelsSSD->SetOwner(kTRUE);
-
-  // DB entries are deleted. In this way metadeta objects are deleted as well
-  if(!cacheStatus){
-    delete entryNoiseSSD;
-    delete entryGainSSD;
-    delete entryBadChannelsSSD;
-  }
-
-  if ((!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
-    AliWarning("Can not get SSD calibration from calibration database !");
-    return kFALSE;
-  }
-
-  fSSDCalibration->SetNoise(noiseSSD);
-  fSSDCalibration->SetGain(gainSSD);
-  fSSDCalibration->SetBadChannels(badChannelsSSD);
-  //fSSDCalibration->FillBadChipMap();
-
-  return kTRUE;
-}
-
-//________________________________________________________________
-void AliITSDetTypeRec::SetDefaultClusterFindersV2(Bool_t rawdata, Bool_t fastSDD){
-
-  //Set defaults for cluster finder V2
-
-  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)){
-       clf = new AliITSClusterFinderV2SPD(this);
-       clf->InitGeometry();
-       if(!rawdata) clf->SetDigits(DigitsAddress(0));
-       SetReconstructionModel(dettype,clf);
-
-      }
-    }
-    //SDD
-    if(dettype==1){
-      if(!GetReconstructionModel(dettype)){
-       if(fastSDD){
-         clf = new AliITSClusterFinderSDDfast(this);
-       }
-       else {
-         clf = new AliITSClusterFinderV2SDD(this);
-       }
-       clf->InitGeometry();
-       if(!rawdata) clf->SetDigits(DigitsAddress(1));
-       SetReconstructionModel(dettype,clf);
-      }
-
-    }
-
-    //SSD
-    if(dettype==2){
-      if(!GetReconstructionModel(dettype)){
-       clf = new AliITSClusterFinderV2SSD(this);
-       clf->InitGeometry();
-       if(!rawdata) clf->SetDigits(DigitsAddress(2));
-       SetReconstructionModel(dettype,clf);
-      }
-    }
-
- }
-   
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::MakeBranch(TTree* tree, Option_t* option){
-
-  //Creates branches for clusters and recpoints
-  Bool_t cR = (strstr(option,"R")!=0);
-  Bool_t cRF = (strstr(option,"RF")!=0);
-  
-  if(cRF)cR = kFALSE;
-
-  if(cR) MakeBranchR(tree);
-  if(cRF) MakeBranchRF(tree);
-
-}
-
-//___________________________________________________________________
-void AliITSDetTypeRec::ResetDigits(){
-  // Reset number of digits and the digits array for the ITS detector.
-  
-  if(!fDigits) return;
-  for(Int_t i=0;i<fgkNdettypes;i++){
-    ResetDigits(i);
-  }
-}
-//___________________________________________________________________
-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();
-
-}
-//__________________________________________________________________
-void AliITSDetTypeRec::MakeBranchR(TTree *treeR, Option_t *opt){
-
-  //Creates tree branches for recpoints
-  // Inputs:
-  //      cont char *file  File name where RecPoints branch is to be written
-  //                       to. If blank it write the SDigits to the same
-  //                       file in which the Hits were found.
-
-  Int_t buffsz = 4000;
-  char branchname[30];
-
-  // only one branch for rec points for all detector types
-  Bool_t oFast= (strstr(opt,"Fast")!=0);
-  
-  Char_t detname[10] = "ITS";
-  
-  if(oFast){
-    snprintf(branchname,29,"%sRecPointsF",detname);
-  } else {
-    snprintf(branchname,29,"%sRecPoints",detname);
-  }
-  
-  if(!fRecPoints)fRecPoints = new TClonesArray("AliITSRecPoint",1000);
-  if (treeR)
-    MakeBranchInTree(treeR,branchname,0,&fRecPoints,buffsz,99);
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::SetTreeAddressR(TTree* const treeR){
-    // Set branch address for the Reconstructed points Trees.
-    // Inputs:
-    //      TTree *treeR   Tree containing the RecPoints.
-    // Outputs:
-    //      none.
-    // Return:
-
-   char branchname[30];
-   Char_t namedet[10]="ITS";
-
-   if(!treeR) return;
-   if(fRecPoints==0x0) fRecPoints = new TClonesArray("AliITSRecPoint",1000);
-   TBranch *branch;
-   snprintf(branchname,29,"%sRecPoints",namedet);
-   branch = treeR->GetBranch(branchname);
-   if (branch) {
-      branch->SetAddress(&fRecPoints);
-    } 
-    else {
-      snprintf(branchname,29,"%sRecPointsF",namedet);
-      branch = treeR->GetBranch(branchname);
-      if (branch) {
-       branch->SetAddress(&fRecPoints);
-      }
-   }
-}
-//____________________________________________________________________
-void AliITSDetTypeRec::AddRecPoint(const AliITSRecPoint &r){
-    // Add a reconstructed space point to the list
-    // Inputs:
-    //      const AliITSRecPoint &r RecPoint class to be added to the tree
-    //                              of reconstructed points TreeR.
-    // Outputs:
-    //      none.
-    // Return:
-    //      none.
-    TClonesArray &lrecp = *fRecPoints;
-    new(lrecp[fNRecPoints++]) AliITSRecPoint(r);
-}
-
-//______________________________________________________________________
-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 !
-  // 7 is the SDD beam test version
-  // Inputs:
-  //      TTree *treeD     Digits tree
-  //      TTree *treeR     Clusters tree
-  //      Int_t lastentry  Offset for module when not all of the modules
-  //                       are processed.
-  //      Option_t *opt    String indicating which ITS sub-detectors should
-  //                       be processed. If ="All" then all of the ITS
-  //                       sub detectors are processed.
-
-  const char *all = strstr(opt,"All");
-  const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
-                        strstr(opt,"SSD")};
-  if(optCluFind==0){
-    SetDefaultClusterFindersV2();
-    AliDebug(1,"V2 cluster finder has been selected \n");
-  }else{
-    SetDefaultClusterFindersV2(kFALSE,kTRUE);
-    AliDebug(1,"SPD and SSD V2 Cluster Finder - SDD fast Cluster Finder \n");    
-  }
-
-  
-  // Reset Fast-OR fired map
-  ResetFastOrFiredMap();
-
-  if (all || det[0]) { // SPD present
-    // Get the FO signals for this event
-    AliRunLoader* runLoader = AliRunLoader::Instance();
-    AliITSLoader* itsLoader = (AliITSLoader*) runLoader->GetLoader("ITSLoader");
-    if (!itsLoader) {
-      AliError("ITS loader is NULL.");
-    }
-   else {
-      fFOSignals = (AliITSFOSignalsSPD*)itsLoader->TreeD()->GetUserInfo()->FindObject("AliITSFOSignalsSPD");
-      if(!fFOSignals) AliError("FO signals not retrieved");
-     }
-
-  }
-
-  
-  AliITSClusterFinder *rec     = 0;
-  Int_t id,module,first=0;
-  for(module=0;module<GetITSgeom()->GetIndexMax();module++){
-      id       = GetITSgeom()->GetModuleType(module);
-      if (!all && !det[id]) continue;
-      if(det[id]) first = GetITSgeom()->GetStartDet(id);
-      rec = (AliITSClusterFinder*)GetReconstructionModel(id);
-      TClonesArray *itsDigits  = DigitsAddress(id);
-      if (!rec){
-       AliFatal("The reconstruction class was not instanciated!");
-       return;
-      }
-      ResetDigits();  // MvL: Not sure we neeed this when rereading anyways
-      if (all) {
-          treeD->GetEvent(lastentry+module);
-        }
-    else {
-      treeD->GetEvent(lastentry+(module-first));
-    }
-    Int_t ndigits = itsDigits->GetEntriesFast();
-    if (ndigits>0 || id==0) { // for SPD we always want to call FindRawClusters (to process FO signals)
-      rec->SetDetTypeRec(this);
-      rec->SetDigits(DigitsAddress(id));
-      //       rec->SetClusters(ClustersAddress(id));
-      rec->FindRawClusters(module);
-    } // end if
-    treeR->Fill();
-    ResetRecPoints();
-  }
-  
-   // Remove PIT in-active chips from Fast-OR fired map
-  if (all || det[0]) { // SPD present
-    RemoveFastOrFiredInActive();
-    // here removing bits which have no associated clusters 
-    RemoveFastOrFiredFromDead(GetFiredChipMap(treeR));  
-  }
-
-  AliITSRecPointContainer* rpcont = AliITSRecPointContainer::Instance();
-  Int_t nClu[6];
-  nClu[0]=rpcont->GetNClustersInLayer(1,treeR);
-  for(Int_t iLay=2; iLay<=6; iLay++) nClu[iLay-1]=rpcont->GetNClustersInLayerFast(iLay);
-  AliInfo(Form("Number of RecPoints in ITS Layers = %d %d %d %d %d %d",
-              nClu[0],nClu[1],nClu[2],nClu[3],nClu[4],nClu[5]));
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::DigitsToRecPoints(AliRawReader* rawReader,TTree *treeR,Option_t *opt){
-  // 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 !
-  // 7 is the SDD beam test version
-  // Inputs:
-  //      AliRawReader *rawReader  Pointer to the raw-data reader
-  //      TTree *treeR             Clusters tree
-  // Outputs:
-  //      none.
-  // Return:
-  //      none.
-  const char *all = strstr(opt,"All");
-  const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
-                        strstr(opt,"SSD")};
-  
-  Int_t id=0;
-  AliITSRecPointContainer* rpc = AliITSRecPointContainer::Instance();
-  rpc->FullReset();
-  TClonesArray* array = rpc->UncheckedGetClusters(0);
-  TBranch *branch = treeR->Branch("ITSRecPoints",&array);
-  DigitsToRecPoints(rawReader,opt); 
-
-  Int_t nClusters =0;
-  for(Int_t iModule=0;iModule<GetITSgeom()->GetIndexMax();iModule++){
-    id = GetITSgeom()->GetModuleType(iModule);
-    if (!all && !det[id]) continue;
-    array = rpc->UncheckedGetClusters(iModule);
-    if(!array){
-      AliDebug(1,Form("data for module %d missing!",iModule));
-    }
-    branch->SetAddress(&array);
-    treeR->Fill();
-    nClusters+=array->GetEntriesFast();
-  }
-
-  rpc->FullReset();
-
-  AliITSRecPointContainer* rpcont = AliITSRecPointContainer::Instance();
-  Int_t nClu[6];
-  nClu[0]=rpcont->GetNClustersInLayer(1,treeR);
-  for(Int_t iLay=2; iLay<=6; iLay++) nClu[iLay-1]=rpcont->GetNClustersInLayerFast(iLay);
-  AliInfo(Form("Number of RecPoints in ITS Layers = %d %d %d %d %d %d, Total = %d",
-              nClu[0],nClu[1],nClu[2],nClu[3],nClu[4],nClu[5],nClusters));
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::DigitsToRecPoints(AliRawReader* rawReader,Option_t *opt){
-  // 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 !
-  // 7 is the SDD beam test version
-  // Inputs:
-  //      AliRawReader *rawReader  Pointer to the raw-data reader
-  // Outputs:
-  //      none.
-  // Return:
-  //      none.
-  const char *all = strstr(opt,"All");
-  const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
-                        strstr(opt,"SSD")};
-  
-  // Reset Fast-OR fired map
-  ResetFastOrFiredMap();
-  
-  AliITSClusterFinder *rec     = 0;
-  Int_t id=0;
-
-  for(id=0;id<3;id++){
-    if (!all && !det[id]) continue;
-    rec = (AliITSClusterFinder*)GetReconstructionModel(id);
-    if (!rec){
-      AliFatal("The reconstruction class was not instantiated");
-      return;
-    }
-    rec->SetDetTypeRec(this);
-    rec->RawdataToClusters(rawReader);    
-  } 
-   
-  // Remove PIT in-active chips from Fast-OR fired map
-  if (all || det[0]) { // SPD present
-    RemoveFastOrFiredInActive();
-    // here removing bits which have no associated clusters 
-    RemoveFastOrFiredFromDead(GetFiredChipMap());
-   
-  }  
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::ReadOldSSDNoise(const TObjArray *array, 
-                                      AliITSNoiseSSDv2 *noiseSSD) {
-  //Reads the old SSD calibration object and converts it to the new format
-  const Int_t fgkSSDSTRIPSPERMODULE = 1536;
-  const Int_t fgkSSDPSIDESTRIPSPERMODULE = 768;
-
-  Int_t gNMod = array->GetEntries();
-  AliInfo("Converting old calibration object for noise...\n");
-
-  //NOISE
-  Double_t noise = 0.0;
-  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);
-      if(iStrip < fgkSSDPSIDESTRIPSPERMODULE)
-       noiseSSD->AddNoiseP(iModule,iStrip,noise);
-      if(iStrip >= fgkSSDPSIDESTRIPSPERMODULE)
-       noiseSSD->AddNoiseN(iModule,1535 - iStrip,noise);
-    }//loop over strips
-  }//loop over modules      
-}
-
-//______________________________________________________________________
-void AliITSDetTypeRec::ReadOldSSDBadChannels(const TObjArray *array, 
-                                            AliITSBadChannelsSSDv2 *badChannelsSSD) {
-  //Reads the old SSD calibration object and converts it to the new format
-  Int_t gNMod = array->GetEntries();
-  AliInfo("Converting old calibration object for bad channels...");
-  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();
-    for(Int_t iPCounter = 0; iPCounter < arrayPSide.GetSize(); iPCounter++) 
-      badChannelsSSD->AddBadChannelP(iModule,
-                                    iPCounter,
-                                    (Char_t)arrayPSide.At(iPCounter));
-        
-    TArrayI arrayNSide = bad->GetBadNChannelsList();
-    for(Int_t iNCounter = 0; iNCounter < arrayNSide.GetSize(); iNCounter++) 
-      badChannelsSSD->AddBadChannelN(iModule,
-                                    iNCounter,
-                                    (Char_t)arrayNSide.At(iNCounter));
-    
-  }//loop over modules      
-}
-
-//______________________________________________________________________
-void AliITSDetTypeRec::ReadOldSSDGain(const TObjArray *array, 
-                                     AliITSGainSSDv2 *gainSSD) {
-  //Reads the old SSD calibration object and converts it to the new format
-
-  Int_t gNMod = array->GetEntries();
-  AliInfo("Converting old calibration object for gain...\n");
-
-  //GAIN
-  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++)
-      gainSSD->AddGainP(iModule,
-                       iPCounter,
-                       arrayPSide.At(iPCounter));
-    TArrayF arrayNSide = gainModule->GetGainN();
-    for(Int_t iNCounter = 0; iNCounter < arrayNSide.GetSize(); iNCounter++)
-      gainSSD->AddGainN(iModule,
-                       iNCounter,
-                       arrayNSide.At(iNCounter));
-  }//loop over modules 
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::RemoveFastOrFiredInActive() {
-  // Removes the chips that were in-active in the pixel trigger (from fast-or fired map)
-
-  if (fTriggerConditions==NULL) {
-    AliError("Pixel trigger conditions are missing.");
-    return;
-  }
-  Int_t eq   = -1;
-  Int_t hs   = -1;
-  Int_t chip = -1;
-  while (fTriggerConditions->GetNextInActiveChip(eq,hs,chip)) {
-    UInt_t chipKey = AliITSRawStreamSPD::GetOfflineChipKeyFromOnline(eq,hs,chip);
-    fFastOrFiredMap.SetBitNumber(chipKey,kFALSE);
-  }
-}
-//______________________________________________________________________
-TBits AliITSDetTypeRec::GetFiredChipMap() const {
-  
-  //
-  // TBits of the fired chips  
-  //
-  AliITSRecPointContainer* rpc = AliITSRecPointContainer::Instance();
-
-  TBits isfiredchip(1200);
-  
-   AliITSsegmentationSPD *segSPD = (AliITSsegmentationSPD*)GetSegmentationModel(0);
-   if(!segSPD) {
-    AliError("no segmentation model for SPD available, the fired chip map is empty. Exiting"); 
-    return isfiredchip;
-   }
-   
-  
-  for(Int_t imod =0; imod < fgkDefaultNModulesSPD; imod++){
-    TClonesArray *array = rpc->UncheckedGetClusters(imod);
-    if(!array) continue;
-    Int_t nCluster = array->GetEntriesFast();
-    while(nCluster--) {
-      AliITSRecPoint* cluster = (AliITSRecPoint*)array->UncheckedAt(nCluster);
-     if (cluster->GetLayer()>1)continue;
-     Float_t local[3]={-1,-1};
-     local[1]=cluster->GetDetLocalX();
-     local[0]=cluster->GetDetLocalZ();
-     
-     Int_t eq = AliITSRawStreamSPD::GetOnlineEqIdFromOffline(imod);
-     Int_t hs = AliITSRawStreamSPD::GetOnlineHSFromOffline(imod);
-     Int_t row, col;
-     segSPD->LocalToDet(0.5,local[0],row,col);
-     Int_t chip = AliITSRawStreamSPD::GetOnlineChipFromOffline(imod,col);
-     Int_t chipkey = AliITSRawStreamSPD::GetOfflineChipKeyFromOnline(eq,hs,chip);
-     isfiredchip.SetBitNumber(chipkey,kTRUE);
-    }
-    
-  } 
-  return isfiredchip;
-  
-}
-//______________________________________________________________________
-TBits AliITSDetTypeRec::GetFiredChipMap(TTree *treeR) const{
-  //
-  // TBits of the fired chips  
-  //
-  TBits isfiredchip(1200);
-  
-  if(!treeR) {
-     AliError("no treeR. fired chip map stays empty. Exiting.");
-     return isfiredchip;
-   }
-   
-  AliITSRecPointContainer* rpcont=AliITSRecPointContainer::Instance();
-  TClonesArray *recpoints = NULL;
-  rpcont->FetchClusters(0,treeR);
-  if(!rpcont->GetStatusOK() || !rpcont->IsSPDActive()){
-    AliError("no clusters. fired chip map stays empty. Exiting.");
-     return isfiredchip;
-  }
-  
-   AliITSsegmentationSPD *segSPD = (AliITSsegmentationSPD*)GetSegmentationModel(0);
-      
-   for(Int_t imod =0; imod < fgkDefaultNModulesSPD; imod++){
-    recpoints = rpcont->UncheckedGetClusters(imod);
-    Int_t nCluster = recpoints->GetEntriesFast();
-    
-    // loop over clusters
-    while(nCluster--) {
-      AliITSRecPoint* cluster = (AliITSRecPoint*)recpoints->UncheckedAt(nCluster);
-      if (cluster->GetLayer()>1)continue;
-      Float_t local[3]={-1,-1};
-      local[1]=cluster->GetDetLocalX();
-      local[0]=cluster->GetDetLocalZ();
-      
-      Int_t eq = AliITSRawStreamSPD::GetOnlineEqIdFromOffline(imod);
-      Int_t hs = AliITSRawStreamSPD::GetOnlineHSFromOffline(imod);
-      Int_t row, col;
-      segSPD->LocalToDet(0.5,local[0],row,col);
-      Int_t chip = AliITSRawStreamSPD::GetOnlineChipFromOffline(imod,col);
-      Int_t chipkey = AliITSRawStreamSPD::GetOfflineChipKeyFromOnline(eq,hs,chip);
-      isfiredchip.SetBitNumber(chipkey,kTRUE);
-    }
-  }
-  return isfiredchip;
-}
-//______________________________________________________________________
-void  AliITSDetTypeRec::RemoveFastOrFiredFromDead(TBits firedchipmap){
-  //
-  // resetting of the fast-or bit on cluster basis. 
-  // fast-or bits can be remnant from SPD ideal simulation (no dead channels)
-  //
-  
-  for(Int_t chipKey=0; chipKey<1200; chipKey++){
-    // FO masked chips have been previously removed  
-   if(!fFastOrFiredMap.TestBitNumber(chipKey)) continue; 
-   if(!firedchipmap.TestBitNumber(chipKey))  {
-    fFastOrFiredMap.SetBitNumber(chipKey,kFALSE);
-    AliDebug(2,Form("removing bit in key %i \n ",chipKey));
-  }
- }
-   
-}
-//______________________________________________________________________
-void AliITSDetTypeRec::SetFastOrFiredMapOnline(UInt_t eq, UInt_t hs, UInt_t chip) {
-  // Set fast-or fired map for this chip
-  Int_t chipKey = AliITSRawStreamSPD::GetOfflineChipKeyFromOnline(eq,hs,chip);
-  return SetFastOrFiredMap(chipKey);
-}
-