AliRoot Core  edcc906 (edcc906)
AliLHCData.h
Go to the documentation of this file.
1 #ifndef ALILHCDATA_H
2 #define ALILHCDATA_H
3 
4 /********************************************************************************
5 * *
6 * AliLHCData: summary of the LHC related information from LHC DIP. *
7 * Created from the TMap provided by the AliLHCReader with optional beginning *
8 * *
9 * The data are (wrapped in the AliLHCDipValT): *
10 * made of TimeStamp (double) and array of values *
11 * *
12 * Multiple entries for each type of data are possible. To obtaine number of *
13 * records (with distinct timestamp) for give type od records use: *
14 * int GetNBunchConfigMeasured(int beam) (with beam=0,1) etc. *
15 * *
16 * To get i-th entry, use brec= AliLHCDipValI* GetBunchConfigMeasured(bm,i); *
17 * Note: exact type of templated AliLHCDipValT pointer depends on the record *
18 * type, concult getters to know it. *
19 * *
20 * Then, once the pointer is obtained, details can be accessed: *
21 * int nBunches = brec->GetSize(); *
22 * for (int i=0;i<nBunches;i++) printf("Bunch#%d: %d\n",i,(*brec)[i]); *
23 * *
24 * ATTENTION: Bunch RFBucked is NEGATIVE for bunches interacting at IR2 *
25 * *
26 * *
27 * *
28 * Author: ruben.shahoyan@cern.ch *
29 * *
30 ********************************************************************************/
31 
32 #include "AliLHCDipValT.h"
33 #include "TObject.h"
34 class TObjArray;
35 //class AliLHCDipValT;
36 
37 class AliDCSArray;
38 class TString;
39 class TMap;
40 class AliLHCReader;
41 class TGraph;
42 
43 class AliLHCData : public TObject
44 {
45  public:
46  enum {kStart,kNStor};
49  enum Proj_t {kX,kY};
53  enum {kMaxBSlots = 3564, kOffsBeam1=346, kOffsBeam2 = 3019, kY2015 = 1420070400};
54  enum {kMarginSOR = 60*60*24*30, // use margin of 30 days for SOR, when looking for the 1st record
55  kMarginEOR = 60*15}; // use margin of 15 min for EOR, when looking for the last record
56  //
68  //
74  //
75  //le
76  public:
77  //
79  AliLHCData(const TMap* dcsMap, double tmin=0, double tmax=1.e10);
80  AliLHCData(const Char_t* dcsFile, double tmin=0, double tmax=1.e10);
81  virtual ~AliLHCData() {}
82  //
83  Bool_t FillData(const TMap* dcsMap, double tmin=0, double tmax=1.e20);
84  Bool_t FillData(const Char_t* dcsFile, double tmin=0, double tmax=1.e20);
85  Double_t GetTMin() const {return fTMin;}
86  Double_t GetTMax() const {return fTMax;}
87  Int_t GetFillNumber() const {return fFillNumber;}
88  void SetFillNumber(Int_t fill) {fFillNumber = fill;}
89  void SetTMin(Double_t t) {fTMin = t<0?0:(t>1e10?1e10:t);}
90  void SetTMax(Double_t t) {fTMax = t<0?0:(t>1e10?1e10:t);}
91  Bool_t IsRun2() const {return fTMin>kY2015;}
92  //
93  virtual void Print(const Option_t *opt="") const;
94  TGraph* ExportGraph(Int_t *coord, Int_t elID=0) const;
95  //
96  Int_t GetNBunchConfigMeasured(int bm) const {return GoodPairID(bm)?fBunchConfMeas[bm][kNStor]:-1;}
97  Int_t GetNBunchConfigDeclared(int bm) const {return GoodPairID(bm)?fBunchConfDecl[bm][kNStor]:-1;}
98  Int_t GetNBunchLengths(int bm) const {return GoodPairID(bm)?fBunchLengths[bm][kNStor]:-1;}
99  Int_t GetNTotalIntensity(int bm) const {return GoodPairID(bm)?fIntensTotal[bm][kNStor]:-1;}
100  Int_t GetNTotalIntensityAv(int bm) const {return GoodPairID(bm)?fIntensTotalAv[bm][kNStor]:-1;}
101  Int_t GetNIntensityPerBunch(int bm) const {return GoodPairID(bm)?fIntensPerBunch[bm][kNStor]:-1;}
102  Int_t GetNEmittanceH(int bm) const {return GoodPairID(bm)?fEmittanceH[bm][kNStor]:-1;}
103  Int_t GetNEmittanceV(int bm) const {return GoodPairID(bm)?fEmittanceV[bm][kNStor]:-1;}
104  Int_t GetNBeamSigmaH(int bm) const {return GoodPairID(bm)?fBeamSigmaH[bm][kNStor]:-1;}
105  Int_t GetNBeamSigmaV(int bm) const {return GoodPairID(bm)?fBeamSigmaV[bm][kNStor]:-1;}
106  //
107  Int_t GetNLuminosityTotal(int lr) const {return GoodPairID(lr)?fLuminTotal[lr][kNStor]:-1;}
108  Int_t GetNLuminosityPerBunch(int lr) const {return GoodPairID(lr)?fLuminPerBC[lr][kNStor]:-1;}
109  Int_t GetNLuminosityAcqMode(int lr) const {return GoodPairID(lr)?fLuminAcqMode[lr][kNStor]:-1;}
110  Int_t GetNCrossingAngle(int lr) const {return GoodPairID(lr)?fCrossAngle[lr][kNStor]:-1;}
111  //
112  Int_t GetNInjectionScheme() const {return fRCInjScheme[kNStor];}
113  Int_t GetNRCBetaStar() const {return fRCBeta[kNStor];}
114  Int_t GetNRCAngleH() const {return fRCAngH[kNStor];}
115  Int_t GetNRCAngleV() const {return fRCAngV[kNStor];}
116  //
117  Int_t GetNLumiAlice() const {return fLumiAlice[kNStor];}
119  Int_t GetNLumiAliceBunch() const {return fLumiAliceBbB[kNStor];}
120  //
121  Int_t GetNBckgAlice(int bg) const {return (bg>-1&&bg<kNBGs) ? fBckgAlice[bg][kNStor] : -1;}
122  //
123  Int_t GetNBPTXdeltaTB1B2() const {return fBPTXdTB1B2[kNStor];}
124  Int_t GetNBPTXdeltaTRMSB1B2() const {return fBPTXdTRMSB1B2[kNStor];}
125  Int_t GetNBPTXPhase(int bm) const {return GoodPairID(bm)?fBPTXPhase[bm][kNStor]:-1;}
126  Int_t GetNBPTXPhaseRMS(int bm) const {return GoodPairID(bm)?fBPTXPhaseRMS[bm][kNStor]:-1;}
127  Int_t GetNBPTXPhaseShift(int bm) const {return GoodPairID(bm)?fBPTXPhaseShift[bm][kNStor]:-1;}
128  //
129  //
130  Int_t GetNCollimatorJawPos(int coll,int jaw) const;
131  //
132  AliLHCDipValI* GetBunchConfigMeasured(int bm, int i=0) const;
133  AliLHCDipValF* GetBunchLengths(int bm, int i=0) const;
134  AliLHCDipValI* GetBunchConfigDeclared(int bm, int i=0) const;
135  AliLHCDipValF* GetTotalIntensity(int bm, int i=0) const;
136  AliLHCDipValF* GetTotalIntensityAv(int bm, int i=0) const;
137  AliLHCDipValF* GetIntensityPerBunch(int bm, int i=0) const;
138  AliLHCDipValF* GetEmittanceH(int bm, int i=0) const;
139  AliLHCDipValF* GetEmittanceV(int bm, int i=0) const;
140  AliLHCDipValF* GetBeamSigmaH(int bm, int i=0) const;
141  AliLHCDipValF* GetBeamSigmaV(int bm, int i=0) const;
142  AliLHCDipValF* GetLuminosityTotal(int lr, int i=0) const;
143  AliLHCDipValF* GetLuminosityPerBunch(int lr, int i=0) const;
144  AliLHCDipValI* GetLuminosityAcqMode(int lr, int i=0) const;
145  AliLHCDipValF* GetCrossAngle(int lr, int i=0) const;
146  AliLHCDipValC* GetInjectionScheme(int i=0) const;
147  AliLHCDipValF* GetRCBetaStar(int i=0) const;
148  AliLHCDipValF* GetRCAngleH(int i=0) const;
149  AliLHCDipValF* GetRCAngleV(int i=0) const;
150  AliLHCDipValF* GetCollimJawPos(int coll, int jaw, int i=0) const;
151  //
152  AliLHCDipValF* GetLumiAlice(int i=0) const;
153  AliLHCDipValF* GetLumiAliceSBDelivered(int i=0) const;
154  AliLHCDipValF* GetLumiAliceBunch(int i=0) const;
155  AliLHCDipValF* GetBckgAlice(int bg, int i=0) const;
156  //
157  AliLHCDipValF* GetBPTXdeltaTB1B2(int i=0) const;
158  AliLHCDipValF* GetBPTXdeltaTRMSB1B2(int i=0) const;
159  AliLHCDipValF* GetBPTXPhase(int bm, int i=0) const;
160  AliLHCDipValF* GetBPTXPhaseRMS(int bm, int i=0) const;
161  AliLHCDipValF* GetBPTXPhaseShift(int bm, int i=0) const;
162  //
163  Float_t GetLumiAlice(Double_t tstamp) const;
164  Float_t GetLumiAliceSBDelivered(Double_t tstamp) const;
165  Float_t GetBckgAlice(Int_t bg,Double_t tstamp) const;
166  //
167  // Float_t GetLumiInstAlice(Double_t tstamp) const;
168  // Float_t GetBckgInstAlice(Double_t tstamp) const;
169  //
170  void FlagInteractingBunches(const Int_t beam1[2],const Int_t beam2[2]);
171  TObject* FindRecValidFor(int start,int nrec, double tstamp) const;
172  Int_t FindEntryValidFor(int start,int nrec, double tstamp) const;
173  AliLHCDipValI* GetBunchConfigMeasured(int beam,double tstamp) const;
174  AliLHCDipValI* GetBunchConfigDeclared(int beam,double tstamp) const;
175  Int_t GetNInteractingBunchesMeasured(int i=0) const;
176  Int_t GetNInteractingBunchesDeclared(int i=0) const;
177  Int_t IsPilotPresent(int i=0) const;
178  //
179  // return array with beginning [0] and number of records for corresponding info (in the fData)
180  const Int_t* GetOffsBunchConfigMeasured(int bm) const {return GoodPairID(bm)?fBunchConfMeas[bm]:0;}
181  const Int_t* GetOffsBunchConfigDeclared(int bm) const {return GoodPairID(bm)?fBunchConfDecl[bm]:0;}
182  const Int_t* GetOffsBunchLengths(int bm) const {return GoodPairID(bm)?fBunchLengths[bm]:0;}
183  const Int_t* GetOffsTotalIntensity(int bm) const {return GoodPairID(bm)?fIntensTotal[bm]:0;}
184  const Int_t* GetOffsTotalIntensityAv(int bm) const {return GoodPairID(bm)?fIntensTotalAv[bm]:0;}
185  const Int_t* GetOffsIntensityPerBunch(int bm) const {return GoodPairID(bm)?fIntensPerBunch[bm]:0;}
186  const Int_t* GetOffsEmittanceH(int bm) const {return GoodPairID(bm)?fEmittanceH[bm]:0;}
187  const Int_t* GetOffsEmittanceV(int bm) const {return GoodPairID(bm)?fEmittanceV[bm]:0;}
188  const Int_t* GetOffsBeamSigmaH(int bm) const {return GoodPairID(bm)?fBeamSigmaH[bm]:0;}
189  const Int_t* GetOffsBeamSigmaV(int bm) const {return GoodPairID(bm)?fBeamSigmaV[bm]:0;}
190  //
191  const Int_t* GetOffsLuminosityTotal(int lr) const {return GoodPairID(lr)?fLuminTotal[lr]:0;}
192  const Int_t* GetOffsLuminosityPerBunch(int lr) const {return GoodPairID(lr)?fLuminPerBC[lr]:0;}
193  const Int_t* GetOffsLuminosityAcqMode(int lr) const {return GoodPairID(lr)?fLuminAcqMode[lr]:0;}
194  const Int_t* GetOffsCrossingAngle(int lr) const {return GoodPairID(lr)?fCrossAngle[lr]:0;}
195  //
196  const Int_t* GetOffsInjectionScheme() const {return fRCInjScheme;}
197  const Int_t* GetOffsRCBetaStar() const {return fRCBeta;}
198  const Int_t* GetOffsRCAngleH() const {return fRCAngH;}
199  const Int_t* GetOffsRCAngleV() const {return fRCAngV;}
200  //
201  const Int_t* GetOffsLumiAlice() const {return fLumiAlice;}
202  const Int_t* GetOffsLumiAliceSBDelivered() const {return fLumiAliceStB;}
203  const Int_t* GetOffsLumiAliceBunch() const {return fLumiAliceBbB;}
204  const Int_t* GetOffsBckgAlice(int bg) const {return (bg>-1&&bg<kNBGs) ? fBckgAlice[bg] : 0;}
205  //
206  const Int_t* GetOffsBPTXdeltaTB1B2() const {return fBPTXdTB1B2;}
207  const Int_t* GetOffsBPTXdeltaTRMSB1B2() const {return fBPTXdTRMSB1B2;}
208  const Int_t* GetOffsBPTXPhase(int bm) const {return GoodPairID(bm)?fBPTXPhase[bm]:0;}
209  const Int_t* GetOffsBPTXPhaseRMS(int bm) const {return GoodPairID(bm)?fBPTXPhaseRMS[bm]:0;}
210  const Int_t* GetOffsBPTXPhaseShift(int bm) const {return GoodPairID(bm)?fBPTXPhaseShift[bm]:0;}
211  //
212  const Int_t* GetOffsCollimatorJawPos(int coll,int jaw) const;
213  //
214  const TObjArray& GetData() const {return fData;}
215  //
216  // analysis methods
217  Int_t GetMeanIntensity(int beamID, Double_t &colliding, Double_t &noncolliding, const TObjArray* bcmasks=0) const;
218  Int_t GetBCId(int bucket, int beamID) const;
219  //
220  // for retrofitting, these methods has to be public
221  // void FillLumiAliceOFL(Int_t nrec, Int_t* time, Double_t* val);
222  // void FillBckgAliceOFL(Int_t nrec, Int_t* time, Double_t* val);
223 
224  protected:
225  //
226  Bool_t FillData(double tmin=0, double tmax=1.e20);
227  virtual void Clear(const Option_t *opt="");
228  void PrintAux(Bool_t full,const Int_t refs[2],const Option_t *opt="") const;
229  TObjArray* GetDCSEntry(const char* key,int &entry,int &last,double tmin,double tmax) const;
230  Int_t FillScalarRecord( int refs[2], const char* rec, const char* recErr=0, Double_t maxAbsVal=1.e30);
231  Int_t FillBunchConfig( int refs[2], const char* rec);
232  Int_t FillStringRecord( int refs[2], const char* rec);
233  Int_t FillAcqMode( int refs[2], const char* rec);
234  Int_t FillBunchInfo( int refs[2], const char* rec,int ibm, Bool_t inRealSlots, Double_t maxAbsVal=1.e30);
235  Int_t FillBCLuminosities(int refs[2], const char* rec, const char* recErr, Int_t useBeam, Double_t maxAbsVal=1.e30);
236  //
237  Int_t ExtractInt(AliDCSArray* dcsArray,Int_t el) const;
238  Double_t ExtractDouble(AliDCSArray* dcsArray,Int_t el) const;
239  TString& ExtractString(AliDCSArray* dcsArray) const;
240  AliLHCData(const AliLHCData& src) : TObject(src),fTMin(0),fTMax(0),fFillNumber(0),fData(0),fkFile2Process(0),fkMap2Process(0) { /*dummy*/ }
241  AliLHCData& operator=(const AliLHCData& ) { /*dummy*/ return *this;}
242  Int_t TimeDifference(double v1,double v2,double tol=0.9) const;
243  Bool_t IzZero(double val, double tol=1e-16) const {return TMath::Abs(val)<tol;}
244  Bool_t GoodPairID(int beam) const;
245  //
246  protected:
247  //
248  Double_t fTMin; // selection timeMin
249  Double_t fTMax; // selection timeMax
250  Int_t fFillNumber; // fill number : kFillNum
251  //
252  //---------------- Last index gives: 0 - beginning of the records in fData, 1 - number of records
253  //
254  // infrormation from RunControl
255  Int_t fRCInjScheme[2]; // active injection scheme : String |kRCInjScheme
256  Int_t fRCBeta[2]; // target beta : Float |kRCBeta
257  Int_t fRCAngH[2]; // horisontal angle : Float |kRCCrossAng
258  Int_t fRCAngV[2]; // vertical angle : Float |kRCVang
259  Int_t fBunchConfDecl[2][2]; // declared beam configuration : Float |kBunchConf
260  //
261  // measured information
262  Int_t fBunchConfMeas[2][2]; // measured beam configuration : Int |kBunchLgtFillB
263  Int_t fBunchLengths[2][2]; // measured beam lenghts : Float |kBunchLgt
264  Int_t fIntensTotal[2][2]; // total beam intensities : Float |kIntTot
265  Int_t fIntensTotalAv[2][2]; // total beam intensities from bunch averages : Float |kIntTotAv
266  Int_t fIntensPerBunch[2][2]; // bunch-by-bunch intensities : Float |kIntBunchAv
267  //
268  Int_t fCrossAngle[2][2]; // crossing angle at IP2 and its error : Float |kLimCrossAng, kLumCrossAngErr
269  Int_t fEmittanceH[2][2]; // beam H emittances : Float |kBeamSzEmittH
270  Int_t fEmittanceV[2][2]; // beam V emittances : Float |kBeamSzEmittV
271  Int_t fBeamSigmaH[2][2]; // beam H sigma and error : Float |kBeamSzSigH,kBeamSzSigHErr
272  Int_t fBeamSigmaV[2][2]; // beam V sigma and error : Float |kBeamSzSigV,kBeamSzSigVErr
273  //
274  Int_t fLuminTotal[2][2]; // total luminosity at IP2 and its error : Float |kLumTot, kLumTotErr
275  Int_t fLuminPerBC[2][2]; // luminosity at IP2 for each BC and its error : Float |kLumBunch,kLumBunchErr
276  Int_t fLuminAcqMode[2][2]; // luminosity acquisition mode : Int |kLumAcqMode
277  //
278  // here we will store the luminosity and the background measured by Alice. We store the value integrated from the start of fill.
279  // the inst. value can be obtained as its derivative
280  Int_t fLumiAlice[2]; // luminosity measured by Alice, Total_Inst : Float |kALILumiTotalInst
281  Int_t fLumiAliceStB[2]; // luminosity measured by Alice, Deli.StabBeam : Float |kALILumiTotalDeliveredStabBeam
282  Int_t fLumiAliceBbB[2]; // luminosity measured by Alice, B-by-B : Float |kALILumiBunchInst
283  //
284  Int_t fBckgAlice[kNBGs][2]; // backgrounds measured by Alice : Float |kALIBackground1,2,3
285  //
286  Int_t fBPTXdTB1B2[2]; // BPTX_deltaT_B1_B2 : Float |kBPTXdeltaTB1B2,
287  Int_t fBPTXdTRMSB1B2[2]; // BPTX_deltaTRMS_B1_B2 : Float |kBPTXdeltaTRMSB1B2,
288  Int_t fBPTXPhase[2][2]; // BPTX_Phase_B1, and BPTX_Phase_B2 : Float |kBPTXPhase
289  Int_t fBPTXPhaseRMS[2][2]; // BPTX_PhaseRMS_B1, and BPTX_PhaseRMS_B2 : Float |kBPTXPhaseRMS
290  Int_t fBPTXPhaseShift[2][2]; // BPTX_Phase_Shift_B1 and BPTX_Phase_Shift_B2 : Float |kBPTXPhaseShift
291  //
292  Int_t fCollimators[kNCollimators][kNJaws][2];// collimator jaws positions : Float |kCollPos
293  //
294  TObjArray fData; // single storage for various records
295  //
296  static const Char_t *fgkDCSNames[]; // beam related DCS names to extract
297  static const Char_t *fgkDCSColNames[]; // collimators to extract
298  static const Char_t *fgkDCSColJaws[]; // names of collimator pieces
299  //
300  private:
301  // non-persistent objects used at the filling time
302  const Char_t* fkFile2Process;
303  const TMap* fkMap2Process;
304 
305  ClassDef(AliLHCData,4)
306 };
307 
308 
309 //_____________________________________________________________________________
310 inline Int_t AliLHCData::GetNCollimatorJawPos(int coll,int jaw) const {// get n records
311  return (coll>=0&&coll<kNCollimators&&jaw>=0&&jaw<kNJaws)? fCollimators[coll][jaw][kNStor]:0;
312 }
313 
314 inline const Int_t* AliLHCData::GetOffsCollimatorJawPos(int coll,int jaw) const { // offset array
315  return (coll>=0&&coll<kNCollimators&&jaw>=0&&jaw<kNJaws)? fCollimators[coll][jaw]:0;
316 }
317 
318 inline AliLHCDipValI* AliLHCData::GetBunchConfigMeasured(int bm, int i) const { // get record
319  return (GoodPairID(bm) && i>=0 && i<fBunchConfMeas[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfMeas[bm][kStart]+i]:0;
320 }
321 
322 inline AliLHCDipValF* AliLHCData::GetBunchLengths(int bm, int i) const { // get record
323  return (GoodPairID(bm) && i>=0 && i<fBunchLengths[bm][kNStor]) ? (AliLHCDipValF*)fData[fBunchLengths[bm][kStart]+i]:0;
324 }
325 
326 inline AliLHCDipValI* AliLHCData::GetBunchConfigDeclared(int bm, int i) const { // get record
327  return (GoodPairID(bm) && i>=0 && i<fBunchConfDecl[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfDecl[bm][kStart]+i]:0;
328 }
329 
330 inline AliLHCDipValF* AliLHCData::GetTotalIntensity(int bm, int i) const { // get record
331  return (GoodPairID(bm) && i>=0 && i<fIntensTotal[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotal[bm][kStart]+i]:0;
332 }
333 
334 inline AliLHCDipValF* AliLHCData::GetTotalIntensityAv(int bm, int i) const { // get record
335  return (GoodPairID(bm) && i>=0 && i<fIntensTotalAv[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensTotalAv[bm][kStart]+i]:0;
336 }
337 
338 inline AliLHCDipValF* AliLHCData::GetIntensityPerBunch(int bm, int i) const { // get record
339  return (GoodPairID(bm) && i>=0 && i<fIntensPerBunch[bm][kNStor]) ? (AliLHCDipValF*)fData[fIntensPerBunch[bm][kStart]+i]:0;
340 }
341 
342 inline AliLHCDipValF* AliLHCData::GetEmittanceH(int bm, int i) const { // get record
343  return (GoodPairID(bm) && i>=0 && i<fEmittanceH[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceH[bm][kStart]+i]:0;
344 }
345 
346 inline AliLHCDipValF* AliLHCData::GetEmittanceV(int bm, int i) const { // get record
347  return (GoodPairID(bm) && i>=0 && i<fEmittanceV[bm][kNStor]) ? (AliLHCDipValF*)fData[fEmittanceV[bm][kStart]+i]:0;
348 }
349 
350 inline AliLHCDipValF* AliLHCData::GetBeamSigmaH(int bm, int i) const { // get record
351  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaH[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaH[bm][kStart]+i]:0;
352 }
353 
354 inline AliLHCDipValF* AliLHCData::GetBeamSigmaV(int bm, int i) const { // get record
355  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaV[bm][kNStor]) ? (AliLHCDipValF*)fData[fBeamSigmaV[bm][kStart]+i]:0;
356 }
357 
358 inline AliLHCDipValF* AliLHCData::GetLuminosityTotal(int lr, int i) const { // get record
359  return (GoodPairID(lr) && i>=0 && i<fLuminTotal[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminTotal[lr][kStart]+i]:0;
360 }
361 
362 inline AliLHCDipValF* AliLHCData::GetLuminosityPerBunch(int lr, int i) const { // get record
363  return (GoodPairID(lr) && i>=0 && i<fLuminPerBC[lr][kNStor]) ? (AliLHCDipValF*)fData[fLuminPerBC[lr][kStart]+i]:0;
364 }
365 
366 inline AliLHCDipValI* AliLHCData::GetLuminosityAcqMode(int lr, int i) const { // get record
367  return (GoodPairID(lr) && i>=0 && i<fLuminAcqMode[lr][kNStor]) ? (AliLHCDipValI*)fData[fLuminAcqMode[lr][kStart]+i]:0;
368 }
369 
370 inline AliLHCDipValF* AliLHCData::GetCrossAngle(int lr, int i) const { // get record
371  return (GoodPairID(lr) && i>=0 && i<fCrossAngle[lr][kNStor]) ? (AliLHCDipValF*)fData[fCrossAngle[lr][kStart]+i]:0;
372 }
373 
374 inline AliLHCDipValC* AliLHCData::GetInjectionScheme(int i) const { // get record
375  return (i>=0 && i<fRCInjScheme[kNStor]) ? (AliLHCDipValC*)fData[fRCInjScheme[kStart]+i]:0;
376 }
377 
378 inline AliLHCDipValF* AliLHCData::GetRCBetaStar(int i) const { // get record
379  return (i>=0 && i<fRCBeta[kNStor]) ? (AliLHCDipValF*)fData[fRCBeta[kStart]+i]:0;
380 }
381 
382 inline AliLHCDipValF* AliLHCData::GetRCAngleH(int i) const { // get record
383  return (i>=0 && i<fRCAngH[kNStor]) ? (AliLHCDipValF*)fData[fRCAngH[kStart]+i]:0;
384 }
385 
386 inline AliLHCDipValF* AliLHCData::GetRCAngleV(int i) const { // get record
387  return (i>=0 && i<fRCAngV[kNStor]) ? (AliLHCDipValF*)fData[fRCAngV[kStart]+i]:0;
388 }
389 
390 inline AliLHCDipValF* AliLHCData::GetCollimJawPos(int coll, int jaw, int i) const { // get record
391  return (coll>=0 && coll<kNCollimators && jaw>=0 && jaw<kNJaws &&
392  i>=0 && i<fCollimators[coll][jaw][kNStor]) ? (AliLHCDipValF*)fData[fCollimators[coll][jaw][kStart]+i]:0;
393 }
394 
395 inline AliLHCDipValF* AliLHCData::GetLumiAlice(int i) const { // get record on integrated luminosity
396  return (i>=0 && i<fLumiAlice[kNStor]) ? (AliLHCDipValF*)fData[fLumiAlice[kStart]+i]:0;
397 }
398 
399 inline AliLHCDipValF* AliLHCData::GetLumiAliceSBDelivered(int i) const { // get record on st.beam delivered luminosity
400  return (i>=0 && i<fLumiAliceStB[kNStor]) ? (AliLHCDipValF*)fData[fLumiAliceStB[kStart]+i]:0;
401 }
402 
403 inline AliLHCDipValF* AliLHCData::GetLumiAliceBunch(int i) const { // get record on b-by-b luminosity
404  return (i>=0 && i<fLumiAliceBbB[kNStor]) ? (AliLHCDipValF*)fData[fLumiAliceBbB[kStart]+i]:0;
405 }
406 
407 inline AliLHCDipValF* AliLHCData::GetBckgAlice(int bg, int i) const { // get record on integrated background
408  return (bg>=0&&bg<kNBGs&&i>=0&&i<fBckgAlice[bg][kNStor]) ? (AliLHCDipValF*)fData[fBckgAlice[bg][kStart]+i]:0;
409 }
410 
411 inline AliLHCDipValF* AliLHCData::GetBPTXdeltaTB1B2(int i) const { // get record
412  return (i>=0 && i<fBPTXdTB1B2[kNStor]) ? (AliLHCDipValF*)fData[fBPTXdTB1B2[kStart]+i]:0;
413 }
414 
415 inline AliLHCDipValF* AliLHCData::GetBPTXdeltaTRMSB1B2(int i) const { // get record
416  return (i>=0 && i<fBPTXdTRMSB1B2[kNStor]) ? (AliLHCDipValF*)fData[fBPTXdTRMSB1B2[kStart]+i]:0;
417 }
418 
419 inline AliLHCDipValF* AliLHCData::GetBPTXPhase(int bm, int i) const { // get record
420  return (GoodPairID(bm) && i>=0 && i<fBPTXPhase[bm][kNStor]) ? (AliLHCDipValF*)fData[fBPTXPhase[bm][kStart]+i]:0;
421 }
422 
423 inline AliLHCDipValF* AliLHCData::GetBPTXPhaseRMS(int bm, int i) const { // get record
424  return (GoodPairID(bm) && i>=0 && i<fBPTXPhaseRMS[bm][kNStor]) ? (AliLHCDipValF*)fData[fBPTXPhaseRMS[bm][kStart]+i]:0;
425 }
426 
427 inline AliLHCDipValF* AliLHCData::GetBPTXPhaseShift(int bm, int i) const { // get record
428  return (GoodPairID(bm) && i>=0 && i<fBPTXPhaseShift[bm][kNStor]) ? (AliLHCDipValF*)fData[fBPTXPhaseShift[bm][kStart]+i]:0;
429 }
430 
431 inline Float_t AliLHCData::GetLumiAlice(Double_t tStamp) const { // get closest in time value on integrated luminosity
433  return idx<0 ? -1 : ((AliLHCDipValF*)fData[fLumiAlice[kStart]+idx])->GetValue();
434 }
435 
436 inline Float_t AliLHCData::GetLumiAliceSBDelivered(Double_t tStamp) const { // get closest in time value on delivered luminosity
438  return idx<0 ? -1 : ((AliLHCDipValF*)fData[fLumiAliceStB[kStart]+idx])->GetValue();
439 }
440 
441 inline Float_t AliLHCData::GetBckgAlice(int bg,Double_t tStamp) const { // get closest in time value on integrated bckg
442  if (bg<0||bg>=kNBGs) return 0;
443  int idx = FindEntryValidFor(fBckgAlice[bg][kStart],fBckgAlice[bg][kNStor],tStamp);
444  return idx<0 ? -1 : ((AliLHCDipValF*)fData[fBckgAlice[bg][kStart]+idx])->GetValue();
445 }
446 
447 
448 
449 inline Int_t AliLHCData::FindEntryValidFor(int start,int nrec, double tstamp) const
450 {
451  // find index of record within this limits valid for given tstamp (i.e. the last one before or equal to tstamp)
452  int idx;
453  for (idx=0;idx<nrec;idx++) {
454  if (TimeDifference(tstamp,((AliLHCDipValI*)fData[start+idx])->GetTimeStamp())<=0) break;
455  }
456  return (idx<nrec) ? idx : nrec-1;
457 }
458 
459 
460 inline Int_t AliLHCData::GetBCId(int bucket, int beamID) const
461 {
462  Int_t offs = beamID==0 ? kOffsBeam1:kOffsBeam2;
463  if (IsRun2()) offs -= 2; // constants were changed (Martino)
464  return (TMath::Abs(bucket)/10 + offs)%kMaxBSlots;
465 }
466 
467 
468 #endif
Int_t fIntensTotal[2][2]
Definition: AliLHCData.h:264
Int_t GetNBunchConfigDeclared(int bm) const
Definition: AliLHCData.h:97
Int_t TimeDifference(double v1, double v2, double tol=0.9) const
Definition: AliLHCData.cxx:316
void SetTMin(Double_t t)
Definition: AliLHCData.h:89
AliLHCDipValF * GetEmittanceV(int bm, int i=0) const
Definition: AliLHCData.h:346
const TObjArray & GetData() const
Definition: AliLHCData.h:214
Int_t fBPTXdTRMSB1B2[2]
Definition: AliLHCData.h:287
AliLHCDipValF * GetBckgAlice(int bg, int i=0) const
Definition: AliLHCData.h:407
AliLHCDipValF * GetRCBetaStar(int i=0) const
Definition: AliLHCData.h:378
AliLHCDipValF * GetBPTXdeltaTRMSB1B2(int i=0) const
Definition: AliLHCData.h:415
AliLHCDipValF * GetTotalIntensity(int bm, int i=0) const
Definition: AliLHCData.h:330
TObject * FindRecValidFor(int start, int nrec, double tstamp) const
Definition: AliLHCData.cxx:352
const Int_t * GetOffsLuminosityAcqMode(int lr) const
Definition: AliLHCData.h:193
AliLHCDipValF * GetBunchLengths(int bm, int i=0) const
Definition: AliLHCData.h:322
Double_t fTMax
Definition: AliLHCData.h:249
Int_t fRCAngH[2]
Definition: AliLHCData.h:257
Int_t fIntensPerBunch[2][2]
Definition: AliLHCData.h:266
Int_t fCrossAngle[2][2]
Definition: AliLHCData.h:268
#define TObjArray
Int_t GetNLumiAlice() const
Definition: AliLHCData.h:117
AliLHCDipValF * GetBeamSigmaV(int bm, int i=0) const
Definition: AliLHCData.h:354
Bool_t FillData(const TMap *dcsMap, double tmin=0, double tmax=1.e20)
Definition: AliLHCData.cxx:124
TObjArray fData
Definition: AliLHCData.h:294
Int_t GetNBPTXPhase(int bm) const
Definition: AliLHCData.h:125
static const Char_t * fgkDCSColJaws[]
Definition: AliLHCData.h:298
Int_t GetNBeamSigmaH(int bm) const
Definition: AliLHCData.h:104
virtual void Print(const Option_t *opt="") const
Definition: AliLHCData.cxx:768
AliLHCDipValF * GetLumiAliceSBDelivered(int i=0) const
Definition: AliLHCData.h:399
Int_t fLuminAcqMode[2][2]
Definition: AliLHCData.h:276
Int_t IsPilotPresent(int i=0) const
Int_t fLumiAliceBbB[2]
Definition: AliLHCData.h:282
const Int_t * GetOffsBckgAlice(int bg) const
Definition: AliLHCData.h:204
Int_t fBeamSigmaV[2][2]
Definition: AliLHCData.h:272
const Int_t * GetOffsBunchLengths(int bm) const
Definition: AliLHCData.h:182
AliLHCDipValF * GetEmittanceH(int bm, int i=0) const
Definition: AliLHCData.h:342
const Char_t * fkFile2Process
Definition: AliLHCData.h:302
Int_t fIntensTotalAv[2][2]
Definition: AliLHCData.h:265
Double_t GetTMin() const
Definition: AliLHCData.h:85
Int_t fLuminTotal[2][2]
Definition: AliLHCData.h:274
const Int_t * GetOffsLuminosityTotal(int lr) const
Definition: AliLHCData.h:191
Int_t FillScalarRecord(int refs[2], const char *rec, const char *recErr=0, Double_t maxAbsVal=1.e30)
Definition: AliLHCData.cxx:366
static const Char_t * fgkDCSColNames[]
Definition: AliLHCData.h:297
const Int_t * GetOffsLumiAliceSBDelivered() const
Definition: AliLHCData.h:202
AliLHCDipValF * GetLumiAliceBunch(int i=0) const
Definition: AliLHCData.h:403
Int_t GetNLuminosityTotal(int lr) const
Definition: AliLHCData.h:107
Int_t GetNBPTXPhaseShift(int bm) const
Definition: AliLHCData.h:127
const Int_t * GetOffsRCAngleH() const
Definition: AliLHCData.h:198
Int_t GetNBPTXdeltaTRMSB1B2() const
Definition: AliLHCData.h:124
const Int_t * GetOffsBPTXPhase(int bm) const
Definition: AliLHCData.h:208
Int_t fBPTXPhase[2][2]
Definition: AliLHCData.h:288
AliLHCDipValI * GetBunchConfigDeclared(int bm, int i=0) const
Definition: AliLHCData.h:326
Int_t GetNRCBetaStar() const
Definition: AliLHCData.h:113
const Int_t * GetOffsEmittanceV(int bm) const
Definition: AliLHCData.h:187
Int_t fLuminPerBC[2][2]
Definition: AliLHCData.h:275
AliLHCData(const AliLHCData &src)
Definition: AliLHCData.h:240
AliLHCDipValF * GetCrossAngle(int lr, int i=0) const
Definition: AliLHCData.h:370
Int_t GetNEmittanceH(int bm) const
Definition: AliLHCData.h:102
const Int_t * GetOffsLumiAliceBunch() const
Definition: AliLHCData.h:203
Int_t GetNLuminosityPerBunch(int lr) const
Definition: AliLHCData.h:108
const Int_t * GetOffsEmittanceH(int bm) const
Definition: AliLHCData.h:186
Bool_t bg
Definition: RunAnaESD.C:6
Int_t fRCAngV[2]
Definition: AliLHCData.h:258
AliLHCDipValF * GetBPTXPhase(int bm, int i=0) const
Definition: AliLHCData.h:419
Int_t fBPTXPhaseShift[2][2]
Definition: AliLHCData.h:290
AliLHCDipValF * GetIntensityPerBunch(int bm, int i=0) const
Definition: AliLHCData.h:338
Int_t fRCBeta[2]
Definition: AliLHCData.h:256
AliLHCDipValF * GetBeamSigmaH(int bm, int i=0) const
Definition: AliLHCData.h:350
Int_t FillBCLuminosities(int refs[2], const char *rec, const char *recErr, Int_t useBeam, Double_t maxAbsVal=1.e30)
Definition: AliLHCData.cxx:601
AliLHCDipValF * GetCollimJawPos(int coll, int jaw, int i=0) const
Definition: AliLHCData.h:390
const Int_t * GetOffsIntensityPerBunch(int bm) const
Definition: AliLHCData.h:185
Int_t GetNBPTXdeltaTB1B2() const
Definition: AliLHCData.h:123
Int_t fLumiAlice[2]
Definition: AliLHCData.h:280
const Int_t * GetOffsCrossingAngle(int lr) const
Definition: AliLHCData.h:194
AliLHCDipValF * GetTotalIntensityAv(int bm, int i=0) const
Definition: AliLHCData.h:334
Int_t GetNInjectionScheme() const
Definition: AliLHCData.h:112
const Int_t * GetOffsRCBetaStar() const
Definition: AliLHCData.h:197
Int_t fBeamSigmaH[2][2]
Definition: AliLHCData.h:271
Double_t fTMin
Definition: AliLHCData.h:248
AliLHCData & operator=(const AliLHCData &)
Definition: AliLHCData.h:241
AliLHCDipValF * GetLuminosityPerBunch(int lr, int i=0) const
Definition: AliLHCData.h:362
Int_t GetNCrossingAngle(int lr) const
Definition: AliLHCData.h:110
void FlagInteractingBunches(const Int_t beam1[2], const Int_t beam2[2])
static const Char_t * fgkDCSNames[]
Definition: AliLHCData.h:296
const Int_t * GetOffsBPTXdeltaTB1B2() const
Definition: AliLHCData.h:206
AliLHCDipValF * GetLuminosityTotal(int lr, int i=0) const
Definition: AliLHCData.h:358
Int_t GetNTotalIntensityAv(int bm) const
Definition: AliLHCData.h:100
Int_t fBPTXdTB1B2[2]
Definition: AliLHCData.h:286
virtual void Clear(const Option_t *opt="")
Definition: AliLHCData.cxx:994
Int_t GetNLumiAliceSBDelivered() const
Definition: AliLHCData.h:118
Int_t GetNBeamSigmaV(int bm) const
Definition: AliLHCData.h:105
AliLHCDipValI * GetLuminosityAcqMode(int lr, int i=0) const
Definition: AliLHCData.h:366
Int_t FillBunchConfig(int refs[2], const char *rec)
Definition: AliLHCData.cxx:434
const Int_t * GetOffsInjectionScheme() const
Definition: AliLHCData.h:196
void rec(const char *filename="raw.root")
Definition: rec.C:1
Int_t fEmittanceV[2][2]
Definition: AliLHCData.h:270
const Int_t * GetOffsLuminosityPerBunch(int lr) const
Definition: AliLHCData.h:192
Int_t GetFillNumber() const
Definition: AliLHCData.h:87
AliLHCDipValF * GetBPTXPhaseRMS(int bm, int i=0) const
Definition: AliLHCData.h:423
Int_t GetNCollimatorJawPos(int coll, int jaw) const
Definition: AliLHCData.h:310
Int_t FillStringRecord(int refs[2], const char *rec)
Definition: AliLHCData.cxx:508
AliLHCDipValI * GetBunchConfigMeasured(int bm, int i=0) const
Definition: AliLHCData.h:318
Int_t GetNLumiAliceBunch() const
Definition: AliLHCData.h:119
Int_t fBunchConfDecl[2][2]
Definition: AliLHCData.h:259
Int_t GetNEmittanceV(int bm) const
Definition: AliLHCData.h:103
Int_t GetNBunchConfigMeasured(int bm) const
Definition: AliLHCData.h:96
Int_t GetNInteractingBunchesDeclared(int i=0) const
TObjArray * GetDCSEntry(const char *key, int &entry, int &last, double tmin, double tmax) const
Definition: AliLHCData.cxx:258
const Int_t * GetOffsCollimatorJawPos(int coll, int jaw) const
Definition: AliLHCData.h:314
Int_t fBPTXPhaseRMS[2][2]
Definition: AliLHCData.h:289
Double_t GetTMax() const
Definition: AliLHCData.h:86
Int_t GetBCId(int bucket, int beamID) const
Definition: AliLHCData.h:460
Int_t GetNIntensityPerBunch(int bm) const
Definition: AliLHCData.h:101
const Int_t * GetOffsBunchConfigMeasured(int bm) const
Definition: AliLHCData.h:180
const Int_t * GetOffsTotalIntensity(int bm) const
Definition: AliLHCData.h:183
Bool_t GoodPairID(int beam) const
Definition: AliLHCData.cxx:328
Int_t GetNRCAngleH() const
Definition: AliLHCData.h:114
AliLHCDipValF * GetBPTXPhaseShift(int bm, int i=0) const
Definition: AliLHCData.h:427
AliLHCDipValF * GetLumiAlice(int i=0) const
Definition: AliLHCData.h:395
Int_t GetNLuminosityAcqMode(int lr) const
Definition: AliLHCData.h:109
AliLHCDipValC * GetInjectionScheme(int i=0) const
Definition: AliLHCData.h:374
const TMap * fkMap2Process
name of DCS file
Definition: AliLHCData.h:303
Int_t GetNInteractingBunchesMeasured(int i=0) const
Int_t fFillNumber
Definition: AliLHCData.h:250
Int_t fBunchLengths[2][2]
Definition: AliLHCData.h:263
Int_t FillBunchInfo(int refs[2], const char *rec, int ibm, Bool_t inRealSlots, Double_t maxAbsVal=1.e30)
Definition: AliLHCData.cxx:541
const Int_t * GetOffsLumiAlice() const
Definition: AliLHCData.h:201
const Int_t * GetOffsBPTXPhaseRMS(int bm) const
Definition: AliLHCData.h:209
Int_t GetMeanIntensity(int beamID, Double_t &colliding, Double_t &noncolliding, const TObjArray *bcmasks=0) const
Int_t fBunchConfMeas[2][2]
Definition: AliLHCData.h:262
const Int_t * GetOffsBPTXdeltaTRMSB1B2() const
Definition: AliLHCData.h:207
const Int_t * GetOffsBeamSigmaH(int bm) const
Definition: AliLHCData.h:188
Int_t GetNTotalIntensity(int bm) const
Definition: AliLHCData.h:99
Int_t GetNBckgAlice(int bg) const
Definition: AliLHCData.h:121
virtual ~AliLHCData()
Definition: AliLHCData.h:81
Int_t ExtractInt(AliDCSArray *dcsArray, Int_t el) const
Definition: AliLHCData.cxx:705
const Int_t * GetOffsBeamSigmaV(int bm) const
Definition: AliLHCData.h:189
Int_t fBckgAlice[kNBGs][2]
Definition: AliLHCData.h:284
const Int_t * GetOffsBPTXPhaseShift(int bm) const
Definition: AliLHCData.h:210
Int_t GetNBPTXPhaseRMS(int bm) const
Definition: AliLHCData.h:126
Double_t ExtractDouble(AliDCSArray *dcsArray, Int_t el) const
Definition: AliLHCData.cxx:725
const Int_t * GetOffsBunchConfigDeclared(int bm) const
Definition: AliLHCData.h:181
Int_t GetNRCAngleV() const
Definition: AliLHCData.h:115
Bool_t IsRun2() const
Definition: AliLHCData.h:91
AliLHCDipValF * GetBPTXdeltaTB1B2(int i=0) const
Definition: AliLHCData.h:411
AliLHCDipValF * GetRCAngleV(int i=0) const
Definition: AliLHCData.h:386
Int_t fEmittanceH[2][2]
Definition: AliLHCData.h:269
Int_t FillAcqMode(int refs[2], const char *rec)
Definition: AliLHCData.cxx:474
void SetTMax(Double_t t)
Definition: AliLHCData.h:90
AliLHCDipValF * GetRCAngleH(int i=0) const
Definition: AliLHCData.h:382
Int_t FindEntryValidFor(int start, int nrec, double tstamp) const
Definition: AliLHCData.h:449
const Int_t * GetOffsRCAngleV() const
Definition: AliLHCData.h:199
void SetFillNumber(Int_t fill)
Definition: AliLHCData.h:88
Bool_t IzZero(double val, double tol=1e-16) const
Definition: AliLHCData.h:243
Int_t fLumiAliceStB[2]
Definition: AliLHCData.h:281
Int_t GetNBunchLengths(int bm) const
Definition: AliLHCData.h:98
TString & ExtractString(AliDCSArray *dcsArray) const
Definition: AliLHCData.cxx:748
TGraph * ExportGraph(Int_t *coord, Int_t elID=0) const
Int_t fCollimators[kNCollimators][kNJaws][2]
Definition: AliLHCData.h:292
Int_t fRCInjScheme[2]
Definition: AliLHCData.h:255
const Int_t * GetOffsTotalIntensityAv(int bm) const
Definition: AliLHCData.h:184
void PrintAux(Bool_t full, const Int_t refs[2], const Option_t *opt="") const
Definition: AliLHCData.cxx:976