+ 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<TObjString*> (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;
+ }
+
+ if(resChMapStore==kFALSE) return 5;
+ else return 0;
+
+}
+
+//______________________________________________________________________________________________
+UInt_t AliZDCPreprocessor::ProcessppData()
+{
+ Bool_t resEnCal=kTRUE, resTowCal=kTRUE;
+
+ // *********** Energy calibration
+ // --- Cheking if there is already the entry in the OCDB
+ AliCDBEntry *cdbEnEntry = GetFromOCDB("Calib", "EnergyCalib");
+ if(!cdbEnEntry){
+ Log(Form(" ZDC/Calib/EnergyCalib entry will be created"));
+ // --- Initializing calibration object
+ AliCDBMetaData metaData;
+ metaData.SetBeamPeriod(0);
+ metaData.SetResponsible("Chiara Oppedisano");
+ //
+ AliZDCEnCalib *eCalib = new AliZDCEnCalib("ZDC");
+ for(Int_t j=0; j<6; j++) eCalib->SetEnCalib(j,1.);
+ metaData.SetComment("AliZDCEnCalib object");
+ //eCalib->Print("");
+ resEnCal = Store("Calib", "EnergyCalib", eCalib, &metaData, 0, kTRUE);
+ }
+ else{
+ // if entry exists it is still valid (=1 for all runs!)
+ Log(Form(" Valid ZDC/Calib/EnergyCalib object already existing in OCDB!!!"));
+ resEnCal = kTRUE;
+ }
+
+ if(resEnCal==kFALSE) return 6;
+
+ //
+ // *********** Tower inter-calibration
+ // --- Cheking if there is already the entry in the OCDB
+ AliCDBEntry *cdbTowEntry = GetFromOCDB("Calib", "TowerCalib");
+ if(!cdbTowEntry){
+ AliZDCTowerCalib *towCalib = new AliZDCTowerCalib("ZDC");
+ for(Int_t j=0; j<5; j++){
+ towCalib->SetZN1EqualCoeff(j, 1.);
+ towCalib->SetZP1EqualCoeff(j, 1.);
+ towCalib->SetZN2EqualCoeff(j, 1.);
+ towCalib->SetZP2EqualCoeff(j, 1.);
+ }
+ //towCalib->Print("");
+ //
+ AliCDBMetaData metaData;
+ metaData.SetBeamPeriod(0);
+ metaData.SetResponsible("Chiara Oppedisano");
+ metaData.SetComment("AliZDCTowerCalib object");
+ //
+ resTowCal = Store("Calib", "TowerCalib", towCalib, &metaData, 0, kTRUE);
+ }
+ else{
+ // if entry exists it is still valid (=1 for all runs!)
+ Log(Form(" Valid ZDC/Calib/TowerCalib object already existing in OCDB!!!"));
+ resTowCal = kTRUE;
+ }
+
+ if(resTowCal==kFALSE) return 7;
+
+ return 0;
+}
+
+//______________________________________________________________________________________________
+UInt_t AliZDCPreprocessor::ProcessCalibData(Float_t beamEnergy)
+{
+ TList* daqSources = GetFileSources(kDAQ, "EMDENERGYCALIB");
+ if(!daqSources){
+ AliError(Form("No sources for CALIBRATION_EMD run %d !", fRun));
+ return 8;
+ }
+ Log("\t List of DAQ sources for EMDENERGYCALIB id: "); daqSources->Print();
+ //
+ TIter iter2(daqSources);
+ TObjString* source = 0;
+ Int_t i=0;
+ Bool_t resEnCal=kTRUE, resTowCal=kTRUE;
+
+ while((source = dynamic_cast<TObjString*> (iter2.Next()))){
+ TString stringEMDFileName = GetFile(kDAQ, "EMDENERGYCALIB", source->GetName());
+ if(stringEMDFileName.Length() <= 0){
+ Log(Form("No file from source %s!", source->GetName()));
+ return 8;
+ }
+ const char* emdFileName = stringEMDFileName.Data();
+ Log(Form("\t Getting file #%d: %s from %s\n",++i,emdFileName,source->GetName()));
+ //
+ // --- Initializing energy calibration object
+ AliZDCEnCalib *eCalib = new AliZDCEnCalib("ZDC");
+ // --- Reading file with calibration data
+ if(emdFileName){
+ FILE *file;
+ if((file = fopen(emdFileName,"r")) == NULL){
+ printf("Cannot open file %s \n",emdFileName);
+ return 8;
+ }
+ Log(Form("File %s connected to process data from EM dissociation events", emdFileName));
+ //
+ Float_t fitValEMD[6];
+ 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 data from EMD calibration data file");
+ if(fitValEMD[j]!=1.) eCalib->SetEnCalib(j, beamEnergy/fitValEMD[j]);
+ else eCalib->SetEnCalib(j, fitValEMD[j]);
+ }
+ }