X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ZDC%2FAliZDCPreprocessor.cxx;h=8e7e1c7ee2d4151e59918d0c79fdf6186251467d;hb=ee4b2f682832f10a70aa85d1f720aba63d4d0de6;hp=b2e38e32e4000f99535419dbb794edfecf170032;hpb=81f091623d62ee5ef34aa53fa2351d3a9331627b;p=u%2Fmrichter%2FAliRoot.git diff --git a/ZDC/AliZDCPreprocessor.cxx b/ZDC/AliZDCPreprocessor.cxx index b2e38e32e40..8e7e1c7ee2d 100644 --- a/ZDC/AliZDCPreprocessor.cxx +++ b/ZDC/AliZDCPreprocessor.cxx @@ -19,6 +19,8 @@ #include "AliZDCLaserCalib.h" #include "AliZDCEnCalib.h" #include "AliZDCTowerCalib.h" +#include "AliZDCMBCalib.h" +#include "AliZDCTDCCalib.h" ///////////////////////////////////////////////////////////////////// // // @@ -48,6 +50,12 @@ // return 15: error storing laser calibration obj. in OCDB // return 16: error in ZDCLaserHisto.root file retrieved from DAQ FXS // return 17: error storing laser histos in RefData +// return 18: error in ZDCMBCalib.root file retrieved from DAQ FXS +// return 19: error storing MB calibration obj. in OCDB +// return 20: error in ZDCTDCCalib.root file retrieved from DAQ FXS +// return 21: error in storing TDC calibration obj. in OCDB +// return 22: error in ZDCTDCHisto.root file retrieved from DAQ FXS +// Return 23: error storing TDC reference histos in RefData // ****************************************************************** ClassImp(AliZDCPreprocessor) @@ -141,14 +149,14 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap) // HV DP since some of them are never found in amanda DB // ------------------------------------------------------ // Store DCS data as reference -/* AliCDBMetaData metadata; + AliCDBMetaData metadata; metadata.SetResponsible("Chiara Oppedisano"); metadata.SetComment("DCS DP TMap for ZDC"); Bool_t resDCSRef = kTRUE; resDCSRef = StoreReferenceData("DCS","Data", dcsAliasMap, &metadata); if(resDCSRef==kFALSE) return 2; -*/ + // --- Writing ZDC table positions into alignment object TClonesArray *array = new TClonesArray("AliAlignObjParams",10); TClonesArray &alobj = *array; @@ -187,7 +195,7 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap) //______________________________________________________________________________________________ UInt_t AliZDCPreprocessor::ProcessChMap() { - const int kNch = 48; + const int kNModules=10, kNch=48, kNScch=32, kNtdcch=32; // Reading the file for mapping from FXS TList* daqSource = GetFileSources(kDAQ, "MAPPING"); @@ -201,7 +209,7 @@ UInt_t AliZDCPreprocessor::ProcessChMap() TIter iter(daqSource); TObjString* source = 0; Int_t isou = 0; - Int_t readMap[kNch][6]; + Int_t modMap[kNModules][3], adcMap[kNch][6], scMap[kNScch][6], tdcMap[kNtdcch][4]; // while((source = dynamic_cast (iter.Next()))){ TString fileName = GetFile(kDAQ, "MAPPING", source->GetName()); @@ -223,7 +231,25 @@ UInt_t AliZDCPreprocessor::ProcessChMap() // for(Int_t j=0; jGetObject(); for(Int_t i=0; iGetADCModule(i)) - && (readMap[i][2] == chMap->GetADCChannel(i)) - && (readMap[i][4] == chMap->GetDetector(i)) - && (readMap[i][5] == chMap->GetSector(i))){ - updateOCDB = kFALSE; - } - else updateOCDB = kTRUE; + if( (adcMap[i][1] != chMap->GetADCModule(i)) + || (adcMap[i][2] != chMap->GetADCChannel(i)) + || (adcMap[i][3] != chMap->GetADCSignalCode(i)) + || (adcMap[i][4] != chMap->GetDetector(i)) + || (adcMap[i][5] != chMap->GetSector(i))) + adcMapUpdated = kTRUE; + } + for(Int_t i=0; iGetScChannel(i)) + || (scMap[i][3] != chMap->GetScSignalCode(i)) ) + scMapUpdated = kTRUE; + } + for(Int_t i=0; iGetTDCChannel(i)) + || (tdcMap[i][3] != chMap->GetTDCSignalCode(i))) + tdcMapUpdated = kTRUE; } } + if(adcMapUpdated || scMapUpdated || tdcMapUpdated) updateOCDB = kTRUE; // Bool_t resChMapStore = kTRUE; if(updateOCDB==kTRUE){ @@ -265,24 +301,33 @@ UInt_t AliZDCPreprocessor::ProcessChMap() // --- Initializing mapping calibration object AliZDCChMap *mapCalib = new AliZDCChMap("ZDC"); // Writing channel map in the OCDB + for(Int_t k=0; kSetModuleMap(k, modMap[k][0], modMap[k][1], modMap[k][2]); + } for(Int_t k=0; kSetADCModule(k,readMap[k][1]); - mapCalib->SetADCChannel(k,readMap[k][2]); - mapCalib->SetDetector(k,readMap[k][4]); - mapCalib->SetSector(k,readMap[k][5]); - // TEMPORARY!!!! Until no mapping from scaler is provided!!!!!!! - for(Int_t il=0; il<32; il++){ - mapCalib->SetScChannel(il, 0); - mapCalib->SetScDetector(il, 0); - mapCalib->SetScSector(il, 0); - } + mapCalib->SetADCModule(k,adcMap[k][1]); + mapCalib->SetADCChannel(k,adcMap[k][2]); + mapCalib->SetADCSignalCode(k,adcMap[k][3]); + mapCalib->SetDetector(k,adcMap[k][4]); + mapCalib->SetSector(k,adcMap[k][5]); + } + for(Int_t k=0; kSetScChannel(k, scMap[k][2]); + mapCalib->SetScSignalCode(k, scMap[k][3]); + mapCalib->SetScDetector(k, scMap[k][4]); + mapCalib->SetScSector(k, scMap[k][5]); } + for(Int_t k=0; kSetTDCChannel(k, tdcMap[k][2]); + mapCalib->SetTDCSignalCode(k, tdcMap[k][3]); + } + // //mapCalib->Print(""); // AliCDBMetaData metaData; metaData.SetBeamPeriod(0); - //metaData.SetResponsible("Chiara Oppedisano"); - metaData.SetComment("Filling AliZDCChMap object"); + metaData.SetResponsible("Chiara Oppedisano"); + metaData.SetComment("AliZDCChMap object created by ZDC preprocessor"); // resChMapStore = Store("Calib","ChMap",mapCalib, &metaData, 0, kTRUE); printf(" Mapping object stored in OCDB\n"); @@ -291,10 +336,102 @@ UInt_t AliZDCPreprocessor::ProcessChMap() Log(" ZDC/Calib/ChMap entry in OCDB is valid and won't be updated"); resChMapStore = kTRUE; } + delete daqSource; daqSource=0; - if(resChMapStore==kFALSE) return 5; + TString runType = GetRunType(); + if(runType.CompareTo("PHYSICS")==0){ + Log(Form("RunType %s -> producing TDC calibration data",runType.Data())); + + // Reading the file for mapping from FXS + TList* daqSourcetdc = GetFileSources(kDAQ, "TDCDATA"); + if(!daqSourcetdc){ + AliError(Form("No sources for file ZDCChMappingTDCCalib.dat in run %d ", fRun)); + return 20; + } + if(daqSourcetdc->GetEntries()==0) return 20; + Log("\t List of DAQ sources for TDCDATA id: "); daqSourcetdc->Print(); + // + Bool_t resTDCcal = kTRUE; + TIter itertdc(daqSourcetdc); + TObjString* sourcetdc = 0; + Int_t isoutdc = 0; + // + while((sourcetdc = dynamic_cast (itertdc.Next()))){ + TString fileNametdc = GetFile(kDAQ, "TDCDATA", sourcetdc->GetName()); + Log(Form("\t Getting file #%d: ZDCTDCdata.dat from %s\n",++isoutdc, sourcetdc->GetName())); + + if(fileNametdc.Length() <= 0){ + Log(Form("No file from source %s!", sourcetdc->GetName())); + return 20; + } + // --- Initializing TDC calibration object + AliZDCTDCCalib *tdcCalib = new AliZDCTDCCalib("ZDC"); + // --- Reading file with calibration data + //const char* fname = fileName.Data(); + if(fileNametdc){ + FILE *filetdc; + if((filetdc = fopen(fileNametdc,"r")) == NULL){ + printf("Cannot open file %s \n",fileNametdc.Data()); + return 20; + } + Log(Form("File %s connected to process TDC data", fileNametdc.Data())); + // + Float_t tdcMean[6][2]; + for(Int_t it=0; it<6; it++){ + for(Int_t iu=0; iu<2; iu++) tdcMean[it][iu]=0.; + } + for(Int_t k=0; k<6; k++){ + for(Int_t j=0; j<2; j++){ + int leggi = fscanf(filetdc,"%f",&tdcMean[k][j]); + if(leggi==0) AliDebug(3," Failing reading data from tdc file"); + tdcCalib->SetMeanTDC(k, tdcMean[k][0]); + tdcCalib->SetWidthTDC(k, tdcMean[k][1]); + } + } + fclose(filetdc); + } + else{ + Log(Form("File %s not found", fileNametdc.Data())); + return 20; + } + // + AliCDBMetaData metaData; + metaData.SetBeamPeriod(0); + metaData.SetResponsible("Chiara Oppedisano"); + metaData.SetComment("Filling AliZDCTDCCalib object"); + // + resTDCcal = Store("Calib","TDCCalib",tdcCalib, &metaData, 0, kTRUE); + if(resTDCcal==kFALSE) return 21; + } + delete daqSourcetdc; daqSourcetdc = 0; + + Bool_t restdcHist = kTRUE; + TList* daqSourceH = GetFileSources(kDAQ, "TDCHISTOS"); + if(!daqSourceH){ + Log(Form("No source for TDCHISTOS id run %d !", fRun)); + return 22; + } + Log("\t List of DAQ sources for TDCHISTOS id: "); daqSourceH->Print(); + // + TIter iterH(daqSourceH); + TObjString* sourceH = 0; + Int_t iH=0; + while((sourceH = dynamic_cast (iterH.Next()))){ + TString stringTDCFileName = GetFile(kDAQ, "TDCHISTOS", sourceH->GetName()); + if(stringTDCFileName.Length() <= 0){ + Log(Form("No TDCHISTOS file from source %s!", sourceH->GetName())); + return 22; + } + const char* tdcFileName = stringTDCFileName.Data(); + Log(Form("\t Getting file #%d: %s from %s\n",++iH, tdcFileName, sourceH->GetName())); + restdcHist = StoreReferenceFile(tdcFileName, "tdcReference.root"); + if(restdcHist==kFALSE) return 23; + } + delete daqSourceH; daqSourceH=0; + } - return 0; + if(resChMapStore==kFALSE) return 5; + else return 0; } @@ -360,7 +497,7 @@ UInt_t AliZDCPreprocessor::ProcessppData() } //______________________________________________________________________________________________ -UInt_t AliZDCPreprocessor::ProcessCalibData() +UInt_t AliZDCPreprocessor::ProcessCalibData(Float_t beamEnergy) { TList* daqSources = GetFileSources(kDAQ, "EMDENERGYCALIB"); if(!daqSources){ @@ -398,8 +535,9 @@ UInt_t AliZDCPreprocessor::ProcessCalibData() for(Int_t j=0; j<6; j++){ if(j<6){ int iread = fscanf(file,"%f",&fitValEMD[j]); - if(iread==0) AliDebug(3," Failing reading daa from EMD calibration data file"); - eCalib->SetEnCalib(j,fitValEMD[j]); + if(iread==0) AliDebug(3," Failing reading data from EMD calibration data file"); + if(fitValEMD[j]!=1.) eCalib->SetEnCalib(j, beamEnergy/fitValEMD[j]); + else eCalib->SetEnCalib(j, fitValEMD[j]); } } // @@ -519,8 +657,8 @@ UInt_t AliZDCPreprocessor::ProcessPedestalData() return 10; } Log(Form("File %s connected to process pedestal data", pedFileName)); - Float_t pedVal[(2*knZDCch)][2]; - for(Int_t k=0; k<(2*knZDCch); k++){ + Float_t pedVal[(3*knZDCch)][2]; + for(Int_t k=0; k<(3*knZDCch); k++){ for(Int_t j=0; j<2; j++){ int aleggi = fscanf(file,"%f",&pedVal[k][j]); if(aleggi==0) AliDebug(3," Failing reading data from pedestal file"); @@ -669,12 +807,77 @@ UInt_t AliZDCPreprocessor::ProcessLaserData() return 0; } + +//______________________________________________________________________________________________ +UInt_t AliZDCPreprocessor::ProcessMBCalibData() +{ + TList* daqSources = GetFileSources(kDAQ, "MBCALIB"); + if(!daqSources){ + AliError(Form("No sources for CALIBRATION_MB run %d !", fRun)); + return 18; + } + if(daqSources->GetEntries()==0) return 18; + Log("\t List of DAQ sources for MBCALIB id: "); daqSources->Print(); + // + TIter iter2(daqSources); + TObjString* source = 0; + Int_t i=0; + Bool_t resMBCal=kTRUE; + + while((source = dynamic_cast (iter2.Next()))){ + TString stringMBFileName = GetFile(kDAQ, "MBCALIB", source->GetName()); + if(stringMBFileName.Length() <= 0){ + Log(Form("No MBCALIB file from source %s!", source->GetName())); + return 18; + } + const char* mbFileName = stringMBFileName.Data(); + Log(Form("\t Getting file #%d: %s from %s\n",++i,mbFileName,source->GetName())); + // + // --- Initializing calibration object + AliZDCMBCalib *mbCalib = new AliZDCMBCalib("ZDC"); + // --- Reading file with calibration data + if(mbFileName){ + TFile * fileHistos = TFile::Open(mbFileName); + Log(Form("File %s connected to process data from CALIBRATION_MB events", mbFileName)); + // + fileHistos->cd(); + TH2F *hZDCvsZEM = (TH2F*) fileHistos->Get("hZDCvsZEM"); + TH2F *hZDCCvsZEM = (TH2F*) fileHistos->Get("hZDCCvsZEM"); + TH2F *hZDCAvsZEM = (TH2F*) fileHistos->Get("hZDCAvsZEM"); + // + mbCalib->SetZDCvsZEM(hZDCvsZEM); + mbCalib->SetZDCCvsZEM(hZDCCvsZEM); + mbCalib->SetZDCAvsZEM(hZDCAvsZEM); + // + //fileHistos->Close(); + } + else{ + Log(Form("File %s not found", mbFileName)); + return 14; + } + // + AliCDBMetaData metaData; + metaData.SetBeamPeriod(0); + metaData.SetResponsible("Chiara Oppedisano"); + metaData.SetComment("Filling AliZDCMBCalib object"); + // + //mbCalib->Dump(); + // + resMBCal = Store("Calib","MBCalib",mbCalib, &metaData, 0, kTRUE); + printf(" here 1000\n"); + if(resMBCal==kFALSE) return 19; + } + delete daqSources; daqSources = 0; + + return 0; +} + //______________________________________________________________________________________________ UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap) { UInt_t resDCS = 0; UInt_t resChMap=0; - UInt_t resEnergyCalib=0, resPedestalCalib=0, resLaserCalib=0; + UInt_t resEnergyCalib=0, resPedestalCalib=0, resLaserCalib=0, resMBCalib=0; // ************************* Process DCS data **************************** if(ProcessDCS()) resDCS = ProcessDCSData(dcsAliasMap); @@ -683,25 +886,29 @@ UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap) const char* beamType = GetRunParameter("beamType"); TString runType = GetRunType(); - printf("\t **** AliZDCPreprocessor -> beamType %s, runType %s ****\n",beamType,runType.Data()); + Float_t beamEnergy = (Float_t)(((TString)GetRunParameter("beamEnergy")).Atof()); + printf("\t **** AliZDCPreprocessor -> runType %s, beamType %s, beamEnergy %1.0f ****\n", + runType.Data(),beamType,beamEnergy); // ****************************************** - // ADC channel mapping + // ADC channel mapping // ****************************************** resChMap = ProcessChMap(); // ****************************************** - // Calibration param. for p-p data (all = 1) + // Calibration param. for p-p data (all = 1) // ****************************************** // NO ENERGY CALIBRATION -> coefficients set to 1. // Temp -> also inter-calibration coefficients are set to 1. - if((strcmp(beamType,"p-p")==0) || (strcmp(beamType,"P-P")==0)) resEnergyCalib = ProcessppData(); + if((strcmp(beamType,"p-p")==0) || (strcmp(beamType,"P-P")==0) + || (strcmp(beamType,"P-A")==0) || (strcmp(beamType,"A-P")==0)) + resEnergyCalib = ProcessppData(); // ***************************************************** - // EMD EVENTS -> Energy calibration and equalization + // CALIBRATION_EMD -> Energy calibration and equalization // ***************************************************** - else if((strcmp(beamType,"A-A")==0) && (runType.CompareTo("CALIBRATION_EMD")==0)) - resEnergyCalib = ProcessCalibData(); + if((strcmp(beamType,"A-A")==0) && (runType.CompareTo("CALIBRATION_EMD")==0)) + resEnergyCalib = ProcessCalibData(beamEnergy); // ***************************************************** // STANDALONE_PEDESTALS -> Pedestal subtraction @@ -711,14 +918,19 @@ UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap) // ***************************************************** // STANDALONE_LASER -> Signal stability and ageing // ***************************************************** - if(runType.CompareTo("STANDALONE_LASER")==0) resLaserCalib = ProcessLaserData(); - + else if(runType.CompareTo("STANDALONE_LASER")==0) resLaserCalib = ProcessLaserData(); + // ***************************************************** + // CALIBRATION_MB -> Signal stability and ageing + // ***************************************************** + else if(runType.CompareTo("CALIBRATION_MB")==0) resMBCalib = ProcessMBCalibData(); + if(resDCS!=0) return resDCS; else if(resChMap!=0) return resChMap; else if(resEnergyCalib!=0) return resEnergyCalib; else if(resPedestalCalib!=0) return resPedestalCalib; else if(resLaserCalib!=0) return resLaserCalib; + else if(resMBCalib!=0) return resMBCalib; return 0;