+
+ AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
+ if(!entry) AliFatal("No calibration data loaded!");
+ AliGRPObject* grpData = 0x0;
+ if(entry){
+ TMap* m = dynamic_cast<TMap*>(entry->GetObject()); // old GRP entry
+ if(m){
+ //m->Print();
+ grpData = new AliGRPObject();
+ grpData->ReadValuesFromMap(m);
+ }
+ else{
+ grpData = dynamic_cast<AliGRPObject*>(entry->GetObject()); // new GRP entry
+ }
+ entry->SetOwner(0);
+ AliCDBManager::Instance()->UnloadFromCache("GRP/GRP/Data");
+ }
+ if(!grpData){
+ AliError("No GRP entry found in OCDB! \n ");
+ return kFALSE;
+ }
+
+ TString beamType = grpData->GetBeamType();
+ if(beamType==AliGRPObject::GetInvalidString()){
+ AliError("\t UNKNOWN beam type from GRP obj -> PMT gains not set in ZDC digitizer!!!\n");
+ }
+
+ fBeamEnergy = grpData->GetBeamEnergy();
+ if(fBeamEnergy==AliGRPObject::GetInvalidFloat()){
+ AliWarning("GRP/GRP/Data entry: missing value for the beam energy ! Using 0.");
+ AliError("\t UNKNOWN beam type from GRP obj -> PMT gains not set in ZDC digitizer!!!\n");
+ fBeamEnergy = 0.;
+ }
+
+ if((beamType.CompareTo("P-P")) == 0 || (beamType.CompareTo("p-p")) == 0){
+ //PTM gains rescaled to beam energy for p-p
+ // New correction coefficients for PMT gains needed
+ // to reproduce experimental spectra (from Grazia Jul 2010)
+ if(fBeamEnergy != 0){
+ for(Int_t j = 0; j < 5; j++){
+ fPMGain[0][j] = 1.515831*(661.444/fBeamEnergy+0.000740671)*10000000;
+ fPMGain[1][j] = 0.674234*(864.350/fBeamEnergy+0.00234375)*10000000;
+ fPMGain[3][j] = 1.350938*(661.444/fBeamEnergy+0.000740671)*10000000;
+ fPMGain[4][j] = 0.678597*(864.350/fBeamEnergy+0.00234375)*10000000;
+ }
+ fPMGain[2][1] = 0.869654*(1.32312-0.000101515*fBeamEnergy)*10000000;
+ fPMGain[2][2] = 1.030883*(1.32312-0.000101515*fBeamEnergy)*10000000;
+ //
+ AliInfo(Form(" PMT gains for p-p @ %1.0f+%1.0f GeV: ZN(%1.0f), ZP(%1.0f), ZEM(%1.0f)\n",
+ fBeamEnergy, fBeamEnergy, fPMGain[0][0], fPMGain[1][0], fPMGain[2][1]));
+ }
+ else{ // for RELDIS simulation
+ Float_t scalGainFactor = 0.5;
+ for(Int_t j = 0; j < 5; j++){
+ fPMGain[0][j] = 50000./scalGainFactor; // ZNC
+ fPMGain[1][j] = 100000./scalGainFactor; // ZPC
+ fPMGain[2][j] = 100000./scalGainFactor; // ZEM
+ fPMGain[3][j] = 50000./scalGainFactor; // ZNA
+ fPMGain[4][j] = 100000./scalGainFactor; // ZPA
+ }
+ //
+ AliInfo(Form(" PMT gains for RELDIS simulation: ZN(%1.0f), ZP(%1.0f), ZEM(%1.0f)\n",
+ fPMGain[0][0], fPMGain[1][0], fPMGain[2][1]));