////////////////////////////////////////////////////////////////////// // Author: Henrik Tydesjo // // For easier handling of dead and noisy pixels they are kept in // // container maps (AliITSIntMap). // // The TArrayI objects that are put in the AliITSCalibrationSPD // // objects can be obtained from the methods GetDeadArray and // // GetNoisyArray. // ////////////////////////////////////////////////////////////////////// #include "AliITSOnlineCalibrationSPDhandler.h" #include "AliITSOnlineCalibrationSPD.h" #include #include AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(): fModuleNr(0), fDeadPixelMap(AliITSIntMap()), fNoisyPixelMap(AliITSIntMap()) {} AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(UInt_t module): fModuleNr(module), fDeadPixelMap(AliITSIntMap()), fNoisyPixelMap(AliITSIntMap()) {} AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(const AliITSOnlineCalibrationSPDhandler& handle): fModuleNr(handle.fModuleNr), fDeadPixelMap(AliITSIntMap()), fNoisyPixelMap(AliITSIntMap()) { // copy constructor UInt_t nrDead = handle.GetNrDead(); for (UInt_t index=0; indexSetDeadPixel(handle.GetDeadColAt(index),handle.GetDeadRowAt(index)); } UInt_t nrNoisy = handle.GetNrNoisy(); for (UInt_t index=0; indexSetNoisyPixel(handle.GetNoisyColAt(index),handle.GetNoisyRowAt(index)); } sprintf(fFileLocation,"%s",handle.fFileLocation); } AliITSOnlineCalibrationSPDhandler::~AliITSOnlineCalibrationSPDhandler() { ClearMaps(); } AliITSOnlineCalibrationSPDhandler& AliITSOnlineCalibrationSPDhandler::operator=(const AliITSOnlineCalibrationSPDhandler& handle) { // assignment operator if (this!=&handle) { this->ClearMaps(); fModuleNr = handle.fModuleNr; UInt_t nrDead = handle.GetNrDead(); for (UInt_t index=0; indexSetDeadPixel(handle.GetDeadColAt(index),handle.GetDeadRowAt(index)); } UInt_t nrNoisy = handle.GetNrNoisy(); for (UInt_t index=0; indexSetNoisyPixel(handle.GetNoisyColAt(index),handle.GetNoisyRowAt(index)); } sprintf(fFileLocation,"%s",handle.fFileLocation); } return *this; } void AliITSOnlineCalibrationSPDhandler::ClearMaps() { // clear the lists of dead and noisy ResetDead(); ResetNoisy(); } void AliITSOnlineCalibrationSPDhandler::WriteToFile() { // write the lists of dead and noisy to default file Char_t fileName[200]; sprintf(fileName,"%s/SPD_DeadNoisy_%d.root",fFileLocation,fModuleNr); WriteToFile(fileName); } void AliITSOnlineCalibrationSPDhandler::WriteToFile(Char_t* fileName) { // write the lists of dead and noisy to file fileName AliITSOnlineCalibrationSPD* calib = new AliITSOnlineCalibrationSPD(); calib->SetModuleNr(GetModuleNr()); calib->SetDeadList(GetDeadArray()); calib->SetNoisyList(GetNoisyArray()); calib->SetNrDead(GetNrDead()); calib->SetNrNoisy(GetNrNoisy()); TFile file(fileName, "RECREATE"); file.WriteTObject(calib, "AliITSOnlineCalibrationSPD"); file.Close(); delete calib; } Bool_t AliITSOnlineCalibrationSPDhandler::ReadFromFile() { // read dead and noisy from default file Char_t fileName[200]; sprintf(fileName,"%s/SPD_DeadNoisy_%d.root",fFileLocation,fModuleNr); return ReadFromFile(fileName); } Bool_t AliITSOnlineCalibrationSPDhandler::ReadDeadFromFile() { // read dead from default file Char_t fileName[200]; sprintf(fileName,"%s/SPD_DeadNoisy_%d.root",fFileLocation,fModuleNr); return ReadDeadFromFile(fileName); } Bool_t AliITSOnlineCalibrationSPDhandler::ReadNoisyFromFile() { // read noisy from default file Char_t fileName[200]; sprintf(fileName,"%s/SPD_DeadNoisy_%d.root",fFileLocation,fModuleNr); return ReadNoisyFromFile(fileName); } Bool_t AliITSOnlineCalibrationSPDhandler::ReadFromFile(Char_t* fileName) { // read dead and noisy from file fileName (clear the previous list of dead and noisy pixels) ClearMaps(); AliITSOnlineCalibrationSPD* calib; FILE* fp0 = fopen(fileName, "r"); if (fp0 == NULL) {return kFALSE;} else { fclose(fp0); TFile file(fileName, "READ"); if (file.IsOpen()) { file.GetObject("AliITSOnlineCalibrationSPD", calib); file.Close(); if (calib!=NULL) { SetModuleNr(calib->GetModuleNr()); Int_t nrDead=calib->GetNrDead(); for (Int_t index=0; indexGetDeadColAt(index); Int_t row=calib->GetDeadRowAt(index); SetDeadPixel(col,row); } Int_t nrNoisy=calib->GetNrNoisy(); for (Int_t index=0; indexGetNoisyColAt(index); Int_t row=calib->GetNoisyRowAt(index); SetNoisyPixel(col,row); } } } } return kTRUE; } Bool_t AliITSOnlineCalibrationSPDhandler::ReadDeadFromFile(Char_t* fileName) { // read dead from file fileName (clear the previous list of dead pixels) ResetDead(); AliITSOnlineCalibrationSPD* calib; FILE* fp0 = fopen(fileName, "r"); if (fp0 == NULL) {return kFALSE;} else { fclose(fp0); TFile file(fileName, "READ"); if (file.IsOpen()) { file.GetObject("AliITSOnlineCalibrationSPD", calib); file.Close(); if (calib!=NULL) { SetModuleNr(calib->GetModuleNr()); Int_t nrDead=calib->GetNrDead(); for (Int_t index=0; indexGetDeadColAt(index); Int_t row=calib->GetDeadRowAt(index); SetDeadPixel(col,row); } } } } return kTRUE; } Bool_t AliITSOnlineCalibrationSPDhandler::ReadNoisyFromFile(Char_t* fileName) { // read noisy from file fileName (clear the previous list of noisy pixels) ResetNoisy(); AliITSOnlineCalibrationSPD* calib; FILE* fp0 = fopen(fileName, "r"); if (fp0 == NULL) {return kFALSE;} else { fclose(fp0); TFile file(fileName, "READ"); if (file.IsOpen()) { file.GetObject("AliITSOnlineCalibrationSPD", calib); file.Close(); if (calib!=NULL) { SetModuleNr(calib->GetModuleNr()); Int_t nrNoisy=calib->GetNrNoisy(); for (Int_t index=0; indexGetNoisyColAt(index); Int_t row=calib->GetNoisyRowAt(index); SetNoisyPixel(col,row); } } } } return kTRUE; } TArrayI AliITSOnlineCalibrationSPDhandler::GetDeadArray() { // get a TArrayI of the dead pixels (format for the AliITSCalibrationSPD object) TArrayI returnArray; returnArray.Set(GetNrDead()*2); for (UInt_t index=0; index