+
+ // Store the currently read map ONLY IF it is different
+ // from the entry in the OCDB
+ Bool_t adcMapUpdated=kFALSE, scMapUpdated=kFALSE, tdcMapUpdated=kFALSE;
+ Bool_t updateOCDB = kFALSE;
+
+ AliCDBEntry *cdbEntry = GetFromOCDB("Calib","ChMap");
+ if(!cdbEntry){
+ Log(" No existing CDB entry for ADC mapping");
+ updateOCDB = kTRUE;
+ }
+ else{
+ AliZDCChMap *chMap = (AliZDCChMap*) cdbEntry->GetObject();
+ for(Int_t i=0; i<kNch; i++){
+ 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; i<kNScch; i++){
+ if( (scMap[i][2] != chMap->GetScChannel(i))
+ || (scMap[i][3] != chMap->GetScSignalCode(i)) )
+ scMapUpdated = kTRUE;
+ }
+ for(Int_t i=0; i<kNtdcch; i++){
+ if( (tdcMap[i][2] != chMap->GetTDCChannel(i))
+ || (tdcMap[i][3] != chMap->GetTDCSignalCode(i)))
+ tdcMapUpdated = kTRUE;
+ }
+ }
+ if(adcMapUpdated || scMapUpdated || tdcMapUpdated) updateOCDB = kTRUE;
+ //
+ Bool_t resChMapStore = kTRUE;
+ if(updateOCDB==kTRUE){
+ Log(" A new entry ZDC/Calib/ChMap will be created");
+ //
+ // --- Initializing mapping calibration object
+ AliZDCChMap *mapCalib = new AliZDCChMap("ZDC");
+ // Writing channel map in the OCDB
+ for(Int_t k=0; k<kNModules; k++){
+ mapCalib->SetModuleMap(k, modMap[k][0], modMap[k][1], modMap[k][2]);
+ }
+ for(Int_t k=0; k<kNch; k++){
+ 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; k<kNScch; k++){
+ mapCalib->SetScChannel(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; k<kNtdcch; k++){
+ mapCalib->SetTDCChannel(k, tdcMap[k][2]);
+ mapCalib->SetTDCSignalCode(k, tdcMap[k][3]);
+ }
+ //
+ //mapCalib->Print("");
+ //
+ AliCDBMetaData metaData;
+ metaData.SetBeamPeriod(0);
+ 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");
+ }
+ else{
+ 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;
+ 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;