]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliLHCData.cxx
Quick fix for bug 71658
[u/mrichter/AliRoot.git] / STEER / AliLHCData.cxx
index d85a31ee85f972a9f8bfb69d8a85e741d18e6ab2..03d28ebf86e2db48f608ff3dff48e4c84d22afa3 100755 (executable)
@@ -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