]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliLHCData.cxx
Coding rule violations corrected
[u/mrichter/AliRoot.git] / STEER / AliLHCData.cxx
index d85a31ee85f972a9f8bfb69d8a85e741d18e6ab2..9175025ba4f9139231b3aff4dc4737e97aec6f94 100755 (executable)
@@ -49,9 +49,9 @@
 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
@@ -63,22 +63,22 @@ const Char_t* AliLHCData::fgkDCSNames[] = {
   "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
@@ -146,37 +146,37 @@ Bool_t AliLHCData::FillData(double tmin, double tmax)
   //\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
@@ -186,26 +186,26 @@ Bool_t AliLHCData::FillData(double tmin, double tmax)
   //\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
@@ -349,7 +349,7 @@ Int_t AliLHCData::FillScalarRecord(int refs[2], const char* rec, const char* rec
     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
@@ -377,7 +377,7 @@ Int_t AliLHCData::FillScalarRecord(int refs[2], const char* rec, const char* rec
     //\r
     fData.Add(curValF);\r
     refs[kNStor]++;\r
-    if (last) break;\r
+    // if (last) break;\r
   }\r
   //\r
   if (fFile2Process) {\r
@@ -937,3 +937,36 @@ void AliLHCData::FlagInteractingBunches(const Int_t beam1[2],const Int_t beam2[2
     }\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