+\r
+//___________________________________________________________________\r
+void AliLHCData::FlagInteractingBunches(const Int_t beam1[2],const Int_t beam2[2])\r
+{\r
+ // assign - sign to interacting bunches\r
+ const int kMaxSlots = 3564;\r
+ const int kOffsBeam1 = 346;\r
+ const int kOffsBeam2 = 3019;\r
+ //\r
+ for (int ib1=0;ib1<beam1[kNStor];ib1++) {\r
+ AliLHCDipValI *bm1 = (AliLHCDipValI*)fData[ beam1[kStart] + ib1];\r
+ if (!bm1) continue;\r
+ AliLHCDipValI *bm2 = (AliLHCDipValI*)FindRecValidFor(beam2[kStart],beam2[kNStor], bm1->GetTimeStamp());\r
+ if (!bm2) continue;\r
+ //\r
+ int nb1 = bm1->GetSize();\r
+ int nb2 = bm2->GetSize();\r
+ int i1,i2;\r
+ for (i1=0;i1<nb1;i1++) {\r
+ int bunch2=-1, bunch1 = TMath::Abs((*bm1)[i1]);\r
+ int slot2 =-1, slot1 = (bunch1/10 + kOffsBeam1)%kMaxSlots;\r
+ for (i2=0;i2<nb2;i2++) {\r
+ bunch2 = TMath::Abs((*bm2)[i2]);\r
+ slot2 = (bunch2/10 + kOffsBeam2)%kMaxSlots;\r
+ if (slot1==slot2) break;\r
+ }\r
+ if (slot1!=slot2) continue;\r
+ (*bm1)[i1] = -bunch1;\r
+ (*bm2)[i2] = -bunch2;\r
+ bm1->SetProcessed1();\r
+ bm2->SetProcessed1();\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