#ifndef ALILHCDATA_H #define ALILHCDATA_H /******************************************************************************** * * * AliLHCData: summary of the LHC related information from LHC DIP. * * Created from the TMap provided by the AliLHCReader with optional beginning * * * * The data are (wrapped in the AliLHCDipValT): * * made of TimeStamp (double) and array of values * * * * Multiple entries for each type of data are possible. To obtaine number of * * records (with distinct timestamp) for give type od records use: * * int GetNBunchConfigMeasured(int beam) (with beam=0,1) etc. * * * * To get i-th entry, use brec= AliLHCDipValI* GetBunchConfigMeasured(bm,i); * * Note: exact type of templated AliLHCDipValT pointer depends on the record * * type, concult getters to know it. * * * * Then, once the pointer is obtained, details can be accessed: * * int nBunches = brec->GetSize(); * * for (int i=0;i1e10?1e10:t);} void SetTMax(Double_t t) {fTMax = t<0?0:(t>1e10?1e10:t);} // virtual void Print(const Option_t *opt="") const; TGraph* ExportGraph(Int_t *coord, Int_t elID=0) const; // Int_t GetNBunchConfigMeasured(int bm) const {return GoodPairID(bm)?fBunchConfMeas[bm][kNStor]:-1;} Int_t GetNBunchConfigDeclared(int bm) const {return GoodPairID(bm)?fBunchConfDecl[bm][kNStor]:-1;} Int_t GetNBunchLengths(int bm) const {return GoodPairID(bm)?fBunchLengths[bm][kNStor]:-1;} Int_t GetNTotalIntensity(int bm) const {return GoodPairID(bm)?fIntensTotal[bm][kNStor]:-1;} Int_t GetNTotalIntensityAv(int bm) const {return GoodPairID(bm)?fIntensTotalAv[bm][kNStor]:-1;} Int_t GetNIntensityPerBunch(int bm) const {return GoodPairID(bm)?fIntensPerBunch[bm][kNStor]:-1;} Int_t GetNEmittanceH(int bm) const {return GoodPairID(bm)?fEmittanceH[bm][kNStor]:-1;} Int_t GetNEmittanceV(int bm) const {return GoodPairID(bm)?fEmittanceV[bm][kNStor]:-1;} Int_t GetNBeamSigmaH(int bm) const {return GoodPairID(bm)?fBeamSigmaH[bm][kNStor]:-1;} Int_t GetNBeamSigmaV(int bm) const {return GoodPairID(bm)?fBeamSigmaV[bm][kNStor]:-1;} // Int_t GetNLuminosityTotal(int lr) const {return GoodPairID(lr)?fLuminTotal[lr][kNStor]:-1;} Int_t GetNLuminosityPerBunch(int lr) const {return GoodPairID(lr)?fLuminPerBC[lr][kNStor]:-1;} Int_t GetNLuminosityAcqMode(int lr) const {return GoodPairID(lr)?fLuminAcqMode[lr][kNStor]:-1;} Int_t GetNCrossingAngle(int lr) const {return GoodPairID(lr)?fCrossAngle[lr][kNStor]:-1;} // Int_t GetNInjectionScheme() const {return fRCInjScheme[kNStor];} Int_t GetNRCBetaStar() const {return fRCBeta[kNStor];} Int_t GetNRCAngleH() const {return fRCAngH[kNStor];} Int_t GetNRCAngleV() const {return fRCAngV[kNStor];} // Int_t GetNLumiAlice() const {return fLumiAlice[kNStor];} Int_t GetNLumiAliceSBDelivered() const {return fLumiAliceStB[kNStor];} Int_t GetNLumiAliceBunch() const {return fLumiAliceBbB[kNStor];} // Int_t GetNBckgAlice(int bg) const {return (bg>-1&&bg-1&&bg=0&&coll=0&&jaw=0&&coll=0&&jaw=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && coll=0 && jaw=0 && i=0 && i=0 && i=0 && i=0&&bg=0&&i=0 && i=0 && i=0 && i=0 && i=0 && iGetValue(); } inline Float_t AliLHCData::GetLumiAliceSBDelivered(Double_t tStamp) const { // get closest in time value on delivered luminosity int idx = FindEntryValidFor(fLumiAliceStB[kStart],fLumiAliceStB[kNStor],tStamp); return idx<0 ? -1 : ((AliLHCDipValF*)fData[fLumiAliceStB[kStart]+idx])->GetValue(); } inline Float_t AliLHCData::GetBckgAlice(int bg,Double_t tStamp) const { // get closest in time value on integrated bckg if (bg<0||bg>=kNBGs) return 0; int idx = FindEntryValidFor(fBckgAlice[bg][kStart],fBckgAlice[bg][kNStor],tStamp); return idx<0 ? -1 : ((AliLHCDipValF*)fData[fBckgAlice[bg][kStart]+idx])->GetValue(); } inline Int_t AliLHCData::FindEntryValidFor(int start,int nrec, double tstamp) const { // find index of record within this limits valid for given tstamp (i.e. the last one before or equal to tstamp) int idx; for (idx=0;idxGetTimeStamp())<=0) break; } return (idx