Updates of DIP file processing, mostly for luminosity related records
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Apr 2010 13:43:15 +0000 (13:43 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Apr 2010 13:43:15 +0000 (13:43 +0000)
STEER/AliLHCData.cxx
STEER/AliLHCData.h
STEER/AliLHCDipValT.h

index a2611b2..b54ea3e 100755 (executable)
@@ -98,7 +98,7 @@ AliLHCData::AliLHCData(const TMap* dcsMap, double tmin, double tmax)
 {\r
   Clear();\r
   SetTMin(tmin);\r
-  SetTMin(tmax);\r
+  SetTMax(tmax);\r
   FillData(dcsMap);\r
 }\r
 \r
@@ -126,7 +126,7 @@ Bool_t AliLHCData::FillData(const TMap* dcsMap, double tmin, double tmax)
     sprintf(buff,fgkDCSNames[kBunchLgtFillB],ibm+1);     // ----- measured bunch configuration\r
     FillBunchConfig(dcsMap, fBunchConfMeas[ibm], buff);\r
     //\r
-    sprintf(buff,fgkDCSNames[kBunchLgt],ibm+1);          // ----- maesured bunch lenghts\r
+    sprintf(buff,fgkDCSNames[kBunchLgt],ibm+1);          // ----- measured bunch lenghts\r
     FillBunchInfo(dcsMap, fBunchLengths[ibm],buff,ibm,kFALSE);  \r
     //\r
     sprintf(buff,fgkDCSNames[kIntBunchAv],ibm+1);        // ----- B-by-B intensities\r
@@ -155,11 +155,14 @@ Bool_t AliLHCData::FillData(const TMap* dcsMap, double tmin, double tmax)
     //\r
   }\r
   //\r
+  FlagInteractingBunches(fBunchConfMeas[0],fBunchConfMeas[1]);\r
+  FlagInteractingBunches(fBunchConfDecl[0],fBunchConfDecl[1]);\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
-    FillBCLuminosities(dcsMap, fLuminPerBC[ilr], buff, buff1, kTRUE);\r
+    FillBCLuminosities(dcsMap, 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
@@ -260,7 +263,7 @@ TObject* AliLHCData::FindRecValidFor(int start,int nrec, double tstamp) const
   AliLHCDipValI *prevObj = 0;\r
   for (int i=0;i<nrec;i++) {\r
     AliLHCDipValI* curObj = (AliLHCDipValI*)fData[start+i];\r
-    if (TimeDifference(tstamp,curObj->GetTimeStamp())>0) break;\r
+    if (TimeDifference(tstamp,curObj->GetTimeStamp())<0) break;\r
     prevObj = curObj;\r
   }\r
   if (!prevObj && nrec>0) prevObj = (AliLHCDipValI*)fData[start]; // if no exact match, return the 1st one\r
@@ -488,7 +491,7 @@ Int_t AliLHCData::FillBunchInfo(const TMap* dcsMap, int refs[2],const char* rec,
 }\r
  \r
 //___________________________________________________________________\r
-Int_t AliLHCData::FillBCLuminosities(const TMap* dcsMap, int refs[2],const char* rec, const char* recErr, Bool_t opt)\r
+Int_t AliLHCData::FillBCLuminosities(const TMap* dcsMap, int refs[2],const char* rec, const char* recErr, int useBeam)\r
 {\r
   // fill luminosities per bunch crossing\r
   //\r
@@ -507,38 +510,51 @@ Int_t AliLHCData::FillBCLuminosities(const TMap* dcsMap, int refs[2],const char*
     double tstamp = dcsVal->GetTimeStamp();\r
     if (tstamp>fTMax) break;\r
     //\r
-    AliLHCDipValI *bconf = GetBunchConfigMeasured(0,tstamp);  // luminosities are stored according to 1st beam bunches\r
+    AliLHCDipValI *bconf;\r
+    bconf = GetBunchConfigMeasured(useBeam,tstamp);  // luminosities are stored according to beam bunches\r
     if (!bconf) {\r
-      AliWarning(Form("Mearured bunch configuration for beam 1 at t=%.1f is not available, trying declared one",tstamp));\r
-      bconf = GetBunchConfigDeclared(0,tstamp);\r
+      AliWarning(Form("Mearured bunch configuration for beam%d at t=%.1f is not available, trying declared one",useBeam,tstamp));\r
+      bconf = GetBunchConfigDeclared(useBeam,tstamp);\r
     }\r
     if (!bconf) {\r
-      AliWarning(Form("Declared bunch configuration for beam 1 at t=%.1f is not available, skip this record",tstamp));\r
+      AliWarning(Form("Declared bunch configuration for beam%i at t=%.1f is not available, skip this record",useBeam,tstamp));\r
       return -1;\r
     }\r
     int nSlots = dcsVal->GetNEntries();     // count number of actual bunches (non-zeros)\r
     int nbunch = bconf->GetSize();\r
     double* dcsArr = dcsVal->GetDouble();\r
     //\r
-    // ATTENTION: FOR THE MOMENT STORE ALL SLOTS CORRESPONDING TO FILLED BUNCHES (until the scheme is clarified)\r
     if (nbunch>nSlots) {\r
       AliWarning(Form("More N bunches than slots in %s at time %.1f",rec,tstamp));\r
       continue;\r
     }\r
-    int dim = nbunch;\r
+    int dim = 0;\r
+    if (!bconf->IsProcessed1()) {\r
+      AliWarning(Form("Bunch conf. for beam%d has no marked interacting bunches, store all luminosity for all filled bunches",useBeam));\r
+      dim = nbunch;\r
+    }\r
+    else { // count number of interacting bunches\r
+      for (int i=nbunch;i--;) if ((*bconf)[i]<0) dim++;\r
+    }\r
+    //\r
     if (recErr) {\r
       if ( !(arrE=GetDCSEntry(dcsMap,recErr,iEntryE,fTMin,fTMax)) || iEntryE<0 ) nEntriesE = -999;\r
       else nEntriesE = arrE->GetEntriesFast();\r
       dim += 1;\r
     }\r
     AliLHCDipValF* curValF = new AliLHCDipValF(dim,tstamp);\r
-    for (int i=nbunch;i--;) {\r
-      int ind = opt ? (*bconf)[i]/10 : i;\r
+    int cnt = 0;\r
+    for (int i=0;i<nbunch;i++) {\r
+      int slot = (*bconf)[i];\r
+      if (bconf->IsProcessed1() && slot>0) continue;\r
+      //\r
+      int ind = TMath::Abs(slot)/10;\r
       if (ind>nSlots) {\r
-       AliError(Form("Bunch %d refers to wrong slot %d, set to -1",i,(*bconf)[i]));\r
-       (*curValF)[i] = -1;\r
+       AliError(Form("Bunch %d refers to wrong slot %d, set to -1",cnt,slot));\r
+       (*curValF)[cnt] = -1;\r
       }\r
-      else (*curValF)[i] = dcsArr[ind];\r
+      else (*curValF)[cnt] = dcsArr[ind];\r
+      cnt++;\r
     }\r
     //\r
     if (recErr) {\r
@@ -647,93 +663,93 @@ void AliLHCData::Print(const Option_t* opt) const
   //\r
   printf("********** SETTINGS FROM RUN CONTROL **********\n");\r
   //\r
-  printf("*Injection Scheme");\r
+  printf("* %-38s","Injection Scheme");\r
   PrintAux(full,fRCInjScheme);\r
   //\r
-  printf("*Beta Star");\r
+  printf("* %-38s","Beta Star");\r
   PrintAux(full,fRCBeta);\r
   //\r
-  printf("*Horisontal Crossing Angle");\r
+  printf("* %-38s","Horisontal Crossing Angle");\r
   PrintAux(full,fRCAngH);\r
   //\r
-  printf("*Vertical   Crossing Angle");\r
+  printf("* %-38s","Vertical   Crossing Angle");\r
   PrintAux(full,fRCAngV);\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d bunch filling scheme [negative: bunch interacting at IR2!]",ib+1);\r
+    printf("* Beam%d filling  [- interacts at IR2!]  ",ib+1);\r
     PrintAux(full,fBunchConfDecl[ib]);\r
   }\r
   //\r
   printf("\n**********       MEASURED DATA       **********\n");\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d bunch filling scheme [negative: bunch interacts at IR2!]",ib+1);\r
+    printf("* Beam%d filling  [- interacts at IR2!]  ",ib+1);\r
     PrintAux(full,fBunchConfMeas[ib]);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d total intensity",ib+1);\r
+    printf("* Beam%d total intensity                 ",ib+1);\r
     PrintAux(full,fIntensTotal[ib]);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d total intensity from bunch average",ib+1);\r
+    printf("* Beam%d total intensity (bunch average) ",ib+1);\r
     PrintAux(full,fIntensTotalAv[ib]);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d intensity per bunch",ib+1);\r
+    printf("* Beam%d intensity per bunch             ",ib+1);\r
     PrintAux(full,fIntensPerBunch[ib]);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d bunch lengths",ib+1);\r
+    printf("* Beam%d bunch lengths                   ",ib+1);\r
     PrintAux(full,fBunchLengths[ib]);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d H. emittance",ib+1);\r
+    printf("* Beam%d Horisontal emittance            ",ib+1);\r
     PrintAux(full,fEmittanceH[ib]);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d V. emittance",ib+1);\r
+    printf("* Beam%d Vertical emittance              ",ib+1);\r
     PrintAux(full,fEmittanceV[ib]);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d H. sigma",ib+1);\r
+    printf("* Beam%d Horisontal sigma                ",ib+1);\r
     PrintAux(full,fBeamSigmaH[ib]);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
-    printf("** Beam%d V. sigma",ib+1);\r
+    printf("* Beam%d Vertical sigma                  ",ib+1);\r
     PrintAux(full,fBeamSigmaV[ib]);\r
   }\r
   //\r
   for (int lr=0;lr<2;lr++) {\r
-    printf("** Total luminosity from BRANB_4%c2",lr ? 'R':'L');\r
+    printf("* Total luminosity from BRANB_4%c2       ",lr ? 'R':'L');\r
     PrintAux(full,fLuminTotal[lr]);\r
   } \r
   //\r
   for (int lr=0;lr<2;lr++) {\r
-    printf("** Luminosity acquisition mode, BRANB_4%c2",lr ? 'R':'L');\r
-    PrintAux(full,fLuminPerBC[lr]);\r
+    printf("* Luminosity acq.mode, BRANB_4%c2        ",lr ? 'R':'L');\r
+    PrintAux(full,fLuminAcqMode[lr]);\r
   } \r
   //\r
   for (int lr=0;lr<2;lr++) {\r
-    printf("** Luminosity per Bunch Crossing from BRANB_4%c2",lr ? 'R':'L');\r
+    printf("* Luminosity per BC from BRANB_4%c2      ",lr ? 'R':'L');\r
     PrintAux(full,fLuminPerBC[lr]);\r
   }\r
   //\r
   for (int lr=0;lr<2;lr++) {\r
-    printf("** Crossing angle, side %c",lr ? 'R':'L');\r
+    printf("* Crossing angle, side %c                ",lr ? 'R':'L');\r
     PrintAux(full,fCrossAngle[lr]);\r
   }\r
   //\r
   for (int coll=0;coll<kNCollimators;coll++)\r
     for (int jaw=0;jaw<kNJaws;jaw++) {\r
-      printf("** Collimator %s:%s",fgkDCSColNames[coll],fgkDCSColJaws[jaw]);\r
+      printf("* Collimator %10s:%16s",fgkDCSColNames[coll],fgkDCSColJaws[jaw]);\r
       PrintAux(full,fCollimators[coll][jaw]);\r
     }\r
   //\r
@@ -748,7 +764,7 @@ void AliLHCData::PrintAux(Bool_t full, const Int_t refs[2]) const
     printf(": N/A\n"); \r
     return;\r
   }\r
-  printf(": (%d):\t",nrec); // number of records\r
+  printf(": (%3d):\t",nrec); // number of records\r
   if (!full) nrec = 1;\r
   int sz = ((AliLHCDipValI*)fData[refs[kStart]])->GetSizeTotal(); // dimension of the record\r
   Bool_t isStr = ((AliLHCDipValI*)fData[refs[kStart]])->IsTypeC();\r
@@ -825,3 +841,37 @@ Int_t AliLHCData::IsPilotPresent(int i) const
   TString scheme = rec->GetValues();\r
   return scheme.Contains("wp",TString::kIgnoreCase);\r
 }\r
+\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
index 40a02ca..0e7e2e3 100755 (executable)
@@ -117,6 +117,7 @@ class AliLHCData : public TObject
   AliLHCDipValF* GetRCAngleV(int i=0)                     const; \r
   AliLHCDipValF* GetCollimJawPos(int coll, int jaw, int i=0) const;\r
   //\r
+  void           FlagInteractingBunches(const Int_t beam1[2],const Int_t beam2[2]);\r
   TObject*       FindRecValidFor(int start,int nrec, double tstamp) const;\r
   AliLHCDipValI* GetBunchConfigMeasured(int beam,double tstamp)  const;\r
   AliLHCDipValI* GetBunchConfigDeclared(int beam,double tstamp)  const;\r
@@ -159,7 +160,7 @@ class AliLHCData : public TObject
   Int_t                 FillStringRecord(  const TMap* dcsMap, int refs[2], const char* rec);\r
   Int_t                 FillAcqMode(       const TMap* dcsMap, int refs[2], const char* rec);\r
   Int_t                 FillBunchInfo(     const TMap* dcsMap, int refs[2], const char* rec,int ibm, Bool_t inRealSlots);\r
-  Int_t                 FillBCLuminosities(const TMap* dcsMap, int refs[2], const char* rec, const char* recErr, Bool_t opt);\r
+  Int_t                 FillBCLuminosities(const TMap* dcsMap, int refs[2], const char* rec, const char* recErr, Int_t useBeam);\r
   //\r
   Int_t                 ExtractInt(AliDCSArray* dcsArray,Int_t el)    const;\r
   Double_t              ExtractDouble(AliDCSArray* dcsArray,Int_t el) const;\r
@@ -224,80 +225,80 @@ inline const Int_t* AliLHCData::GetOffsCollimatorJawPos(int coll,int jaw)  const
 }\r
 \r
 inline AliLHCDipValI* AliLHCData::GetBunchConfigMeasured(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBunchConfMeas[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfMeas[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fBunchConfMeas[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfMeas[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetBunchLengths(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBunchLengths[bm][kNStor]) ? (AliLHCDipValF*)fData[fBunchLengths[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fBunchLengths[bm][kNStor]) ? (AliLHCDipValF*)fData[fBunchLengths[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValI* AliLHCData::GetBunchConfigDeclared(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBunchConfDecl[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfDecl[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fBunchConfDecl[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfDecl[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetTotalIntensity(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensTotal[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotal[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fIntensTotal[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotal[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetTotalIntensityAv(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensTotalAv[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotalAv[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fIntensTotalAv[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotalAv[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetIntensityPerBunch(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensPerBunch[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensPerBunch[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fIntensPerBunch[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensPerBunch[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetEmittanceH(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fEmittanceH[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceH[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fEmittanceH[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceH[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetEmittanceV(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fEmittanceV[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceV[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fEmittanceV[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceV[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetBeamSigmaH(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaH[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaH[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaH[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaH[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetBeamSigmaV(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaV[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaV[bm][kStart+i]]:0;\r
+  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaV[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaV[bm][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetLuminosityTotal(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fLuminTotal[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminTotal[lr][kStart+i]]:0;\r
+  return (GoodPairID(lr) && i>=0 && i<fLuminTotal[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminTotal[lr][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetLuminosityPerBunch(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fLuminPerBC[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminPerBC[lr][kStart+i]]:0;\r
+  return (GoodPairID(lr) && i>=0 && i<fLuminPerBC[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminPerBC[lr][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValI* AliLHCData::GetLuminosityAcqMode(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fLuminAcqMode[lr][kNStor]) ? (AliLHCDipValI*)fData[fLuminAcqMode[lr][kStart+i]]:0;\r
+  return (GoodPairID(lr) && i>=0 && i<fLuminAcqMode[lr][kNStor]) ? (AliLHCDipValI*)fData[fLuminAcqMode[lr][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetCrossAngle(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fCrossAngle[lr][kNStor]) ? (AliLHCDipValF*)fData[fCrossAngle[lr][kStart+i]]:0;\r
+  return (GoodPairID(lr) && i>=0 && i<fCrossAngle[lr][kNStor]) ? (AliLHCDipValF*)fData[fCrossAngle[lr][kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValC* AliLHCData::GetInjectionScheme(int i) const { // get record\r
-  return (i>=0 && i<fRCInjScheme[kNStor]) ? (AliLHCDipValC*)fData[fRCInjScheme[kStart+i]]:0;\r
+  return (i>=0 && i<fRCInjScheme[kNStor]) ? (AliLHCDipValC*)fData[fRCInjScheme[kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetRCBetaStar(int i) const { // get record\r
-  return (i>=0 && i<fRCBeta[kNStor]) ? (AliLHCDipValF*)fData[fRCBeta[kStart+i]]:0;\r
+  return (i>=0 && i<fRCBeta[kNStor]) ? (AliLHCDipValF*)fData[fRCBeta[kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetRCAngleH(int i) const { // get record\r
-  return (i>=0 && i<fRCAngH[kNStor]) ? (AliLHCDipValF*)fData[fRCAngH[kStart+i]]:0;\r
+  return (i>=0 && i<fRCAngH[kNStor]) ? (AliLHCDipValF*)fData[fRCAngH[kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetRCAngleV(int i) const { // get record\r
-  return (i>=0 && i<fRCAngV[kNStor]) ? (AliLHCDipValF*)fData[fRCAngV[kStart+i]]:0;\r
+  return (i>=0 && i<fRCAngV[kNStor]) ? (AliLHCDipValF*)fData[fRCAngV[kStart]+i]:0;\r
 }\r
 \r
 inline AliLHCDipValF* AliLHCData::GetCollimJawPos(int coll, int jaw, int i) const { // get record\r
   return (coll>=0 && coll<kNCollimators && jaw>=0 && jaw<kNJaws && \r
-         i>=0 && i<fCollimators[coll][jaw][kNStor]) ? (AliLHCDipValF*)fData[fCollimators[coll][jaw][kStart+i]]:0;\r
+         i>=0 && i<fCollimators[coll][jaw][kNStor]) ? (AliLHCDipValF*)fData[fCollimators[coll][jaw][kStart]+i]:0;\r
 }\r
 \r
 \r
index 5df929e..e9cf810 100755 (executable)
@@ -215,7 +215,7 @@ void AliLHCDipValT<Element>::Print(const Option_t *opt) const
     if (sz>1) printf("\n");
     Bool_t eolOK = kFALSE;
     for (int i=0;i<sz;i++) {
-      if      (tp == typeid(Int_t*).name()    || tp == typeid(UInt_t*).name() ) printf(" %+5d |" ,(Int_t)fArray[i]);
+      if      (tp == typeid(Int_t*).name()    || tp == typeid(UInt_t*).name() ) printf(" %6d |" ,(Int_t)fArray[i]);
       else if (tp == typeid(Double_t*).name() || tp == typeid(Float_t*).name()) printf(" %+.3e |",(Float_t)fArray[i]);
       else printf(" ");
       eolOK = kFALSE;