ClassImp(AliLHCData)\r
\r
const Char_t* AliLHCData::fgkDCSNames[] = {\r
- "LHC_IntensityBeam%d_totalIntensity",\r
- "LHC_BeamIntensityPerBunchBeam%d_averageBeamIntensity",\r
- "LHC_BeamIntensityPerBunchBeam%d_Average_BunchIntensities",\r
+ "LHC_IntensityBeam%1d_totalIntensity",\r
+ "LHC_BeamIntensityPerBunchBeam%1d_averageBeamIntensity",\r
+ "LHC_BeamIntensityPerBunchBeam%1d_Average_BunchIntensities",\r
//\r
"LHC_LumAverageBRANB_4%c2_acqMode",\r
"LHC_LumAverageBRANB_4%c2_meanLuminosity",\r
"LHC_CirculatingBunchConfig_Beam%d",\r
"LHC_FillNumber",\r
//\r
- "LHC_BunchLengthBeam%d_nBunches",\r
- "LHC_BunchLengthBeam%d_bunchesLenghts",\r
- "LHC_BunchLengthBeam%d_filledBuckets",\r
+ "LHC_BunchLengthBeam%1d_nBunches",\r
+ "LHC_BunchLengthBeam%1d_bunchesLenghts",\r
+ "LHC_BunchLengthBeam%1d_filledBuckets",\r
//\r
"LHC_RunControl_ActiveInjectionScheme",\r
"LHC_RunControl_BetaStar",\r
"LHC_RunControl_IP2_Xing_Murad",\r
"LHC_RunControl_IP2_ALICE_Murad",\r
\r
- "LHC_BeamSizeBeam%d_acqMode",\r
- "LHC_BeamSizeBeam%d_sigmaH",\r
- "LHC_BeamSizeBeam%d_sigmaV",\r
- "LHC_BeamSizeBeam%d_emittanceH",\r
- "LHC_BeamSizeBeam%d_emittanceV",\r
- "LHC_BeamSizeBeam%d_errorSigmaH",\r
- "LHC_BeamSizeBeam%d_errorSigmaV",\r
+ "LHC_BeamSizeBeam%1d_acqMode",\r
+ "LHC_BeamSizeBeam%1d_sigmaH",\r
+ "LHC_BeamSizeBeam%1d_sigmaV",\r
+ "LHC_BeamSizeBeam%1d_emittanceH",\r
+ "LHC_BeamSizeBeam%1d_emittanceV",\r
+ "LHC_BeamSizeBeam%1d_errorSigmaH",\r
+ "LHC_BeamSizeBeam%1d_errorSigmaV",\r
//\r
"LHC_CollimatorPos_%s_lvdt_%s"\r
};\r
//\r
for (int ibm=0;ibm<2;ibm++) {\r
//\r
- sprintf(buff,fgkDCSNames[kBunchConf],ibm+1); // ----- declared bunch configuration\r
+ snprintf(buff,99,fgkDCSNames[kBunchConf],ibm+1); // ----- declared bunch configuration\r
FillBunchConfig(fBunchConfDecl[ibm], buff);\r
//\r
- sprintf(buff,fgkDCSNames[kBunchLgtFillB],ibm+1); // ----- measured bunch configuration\r
+ snprintf(buff,99,fgkDCSNames[kBunchLgtFillB],ibm+1); // ----- measured bunch configuration\r
FillBunchConfig(fBunchConfMeas[ibm], buff);\r
//\r
- sprintf(buff,fgkDCSNames[kBunchLgt],ibm+1); // ----- measured bunch lenghts\r
+ snprintf(buff,99,fgkDCSNames[kBunchLgt],ibm+1); // ----- measured bunch lenghts\r
FillBunchInfo(fBunchLengths[ibm],buff,ibm,kFALSE); \r
//\r
- sprintf(buff,fgkDCSNames[kIntBunchAv],ibm+1); // ----- B-by-B intensities\r
+ snprintf(buff,99,fgkDCSNames[kIntBunchAv],ibm+1); // ----- B-by-B intensities\r
FillBunchInfo(fIntensPerBunch[ibm],buff,ibm,kTRUE);\r
//\r
//\r
- sprintf(buff,fgkDCSNames[kIntTot],ibm+1); // ----- total intensities for beam 1 and 2\r
+ snprintf(buff,99,fgkDCSNames[kIntTot],ibm+1); // ----- total intensities for beam 1 and 2\r
FillScalarRecord(fIntensTotal[ibm], buff);\r
//\r
- sprintf(buff,fgkDCSNames[kIntTotAv],ibm+1); // ----- total intensities for beam 1 and 2 from B-by-B average\r
+ snprintf(buff,99,fgkDCSNames[kIntTotAv],ibm+1); // ----- total intensities for beam 1 and 2 from B-by-B average\r
FillScalarRecord(fIntensTotalAv[ibm], buff);\r
//\r
- sprintf(buff,fgkDCSNames[kBeamSzEmittH],ibm+1); // ----- H emittance for beam 1 and 2 \r
+ snprintf(buff,99,fgkDCSNames[kBeamSzEmittH],ibm+1); // ----- H emittance for beam 1 and 2 \r
FillScalarRecord(fEmittanceH[ibm], buff);\r
//\r
- sprintf(buff,fgkDCSNames[kBeamSzEmittV],ibm+1); // ----- V emittance for beam 1 and 2 \r
+ snprintf(buff,99,fgkDCSNames[kBeamSzEmittV],ibm+1); // ----- V emittance for beam 1 and 2 \r
FillScalarRecord(fEmittanceV[ibm], buff);\r
//\r
- sprintf(buff ,fgkDCSNames[kBeamSzSigH], ibm+1); // ----- H sigmas and errors for beam 1 and 2 \r
- sprintf(buff1,fgkDCSNames[kBeamSzSigHErr],ibm+1);\r
+ snprintf(buff,99 ,fgkDCSNames[kBeamSzSigH], ibm+1); // ----- H sigmas and errors for beam 1 and 2 \r
+ snprintf(buff1,99,fgkDCSNames[kBeamSzSigHErr],ibm+1);\r
FillScalarRecord(fBeamSigmaH[ibm], buff, buff1);\r
//\r
- sprintf(buff ,fgkDCSNames[kBeamSzSigV], ibm+1); // ----- V sigmas and errors for beam 1 and 2 \r
- sprintf(buff1,fgkDCSNames[kBeamSzSigVErr],ibm+1);\r
+ snprintf(buff,99 ,fgkDCSNames[kBeamSzSigV], ibm+1); // ----- V sigmas and errors for beam 1 and 2 \r
+ snprintf(buff1,99,fgkDCSNames[kBeamSzSigVErr],ibm+1);\r
FillScalarRecord(fBeamSigmaV[ibm], buff, buff1);\r
//\r
}\r
//\r
for (int ilr=0;ilr<2;ilr++) {\r
//\r
- sprintf(buff ,fgkDCSNames[kLumBunch], ilr ? 'R':'L'); // ---- BC-by-BC luminosity at IP2 and its error\r
- sprintf(buff1,fgkDCSNames[kLumBunchErr], ilr ? 'R':'L');\r
+ snprintf(buff,99 ,fgkDCSNames[kLumBunch], ilr ? 'R':'L'); // ---- BC-by-BC luminosity at IP2 and its error\r
+ snprintf(buff1,99,fgkDCSNames[kLumBunchErr], ilr ? 'R':'L');\r
FillBCLuminosities(fLuminPerBC[ilr], buff, buff1, 0); // BRAN L uses beam2 as a reference, BRAN R - beam1\r
//\r
- sprintf(buff ,fgkDCSNames[kLumTot] , ilr ? 'R':'L'); // ---- total luminosity at IP2 and its error\r
- sprintf(buff1,fgkDCSNames[kLumTotErr], ilr ? 'R':'L');\r
+ snprintf(buff,99 ,fgkDCSNames[kLumTot] , ilr ? 'R':'L'); // ---- total luminosity at IP2 and its error\r
+ snprintf(buff1,99,fgkDCSNames[kLumTotErr], ilr ? 'R':'L');\r
FillScalarRecord(fLuminTotal[ilr], buff, buff1);\r
//\r
- sprintf(buff ,fgkDCSNames[kLumAcqMode], ilr ? 'R':'L'); // ---- luminosity acquisition mode\r
+ snprintf(buff,99 ,fgkDCSNames[kLumAcqMode], ilr ? 'R':'L'); // ---- luminosity acquisition mode\r
FillAcqMode(fLuminAcqMode[ilr], buff);\r
//\r
- sprintf(buff, fgkDCSNames[kLumCrossAng] , ilr ? 'R':'L'); //----- crossing angle at IP2 and its error\r
- sprintf(buff1,fgkDCSNames[kLumCrossAngErr], ilr ? 'R':'L');\r
+ snprintf(buff,99, fgkDCSNames[kLumCrossAng] , ilr ? 'R':'L'); //----- crossing angle at IP2 and its error\r
+ snprintf(buff1,99,fgkDCSNames[kLumCrossAngErr], ilr ? 'R':'L');\r
FillScalarRecord(fCrossAngle[ilr], buff, buff1);\r
// \r
}\r
//\r
for (int icl=0;icl<kNCollimators;icl++) { // ----- collimators positions\r
for (int jaw=0;jaw<kNJaws;jaw++) {\r
- sprintf(buff,fgkDCSNames[kCollPos], fgkDCSColNames[icl],fgkDCSColJaws[jaw]); \r
+ snprintf(buff,99,fgkDCSNames[kCollPos], fgkDCSColNames[icl],fgkDCSColJaws[jaw]); \r
FillScalarRecord(fCollimators[icl][jaw], buff);\r
} // jaws\r
} // collimators\r
dim += 1;\r
}\r
//\r
- Bool_t last = kFALSE;\r
+ // Bool_t last = kFALSE;\r
while (iFirst<=iLast) {\r
AliDCSArray *dcsVal = (AliDCSArray*) arr->At(iFirst++);\r
double tstamp = dcsVal->GetTimeStamp();\r
//\r
fData.Add(curValF);\r
refs[kNStor]++;\r
- if (last) break;\r
+ // if (last) break;\r
}\r
//\r
if (fFile2Process) {\r
}\r
}\r
}\r
+\r
+//___________________________________________________________________\r
+Int_t AliLHCData::GetMeanIntensity(int beamID, Double_t &colliding, Double_t &noncolliding) const\r
+{\r
+ // get average intensity for all, colliding and non-colliding bunches\r
+ // on success returns number of intensity records used (1 per ~10 min)\r
+ colliding = noncolliding = -1.;\r
+ if (beamID<0||beamID>1) {\r
+ AliError(Form("BeamID must be either 0 or 1, %d requested",beamID));\r
+ return -10;\r
+ }\r
+ //\r
+ int nrec = GetNIntensityPerBunch(beamID);\r
+ if (nrec<1) return -1;\r
+ AliLHCDipValI *conf = GetBunchConfigMeasured(beamID);\r
+ if (!conf) conf = GetBunchConfigDeclared(beamID);\r
+ if (!conf) return -2;\r
+ int nb = conf->GetSize();\r
+ //\r
+ for (int irec=0;irec<nrec;irec++) {\r
+ AliLHCDipValF* rInt = GetIntensityPerBunch(beamID,irec);\r
+ for (int ib=0;ib<nb;ib++) {\r
+ double val = rInt->GetValue(ib);\r
+ if (val<0) continue;\r
+ int bID = conf->GetValue(ib);\r
+ if (bID<0) colliding += val;\r
+ else noncolliding += val;\r
+ }\r
+ }\r
+ colliding /= nrec;\r
+ noncolliding /= nrec;\r
+ return nrec;\r
+}\r