#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; // 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 GetNCollimatorJawPos(int coll,int jaw) const; // AliLHCDipValI* GetBunchConfigMeasured(int bm, int i=0) const; AliLHCDipValF* GetBunchLengths(int bm, int i=0) const; AliLHCDipValI* GetBunchConfigDeclared(int bm, int i=0) const; AliLHCDipValF* GetTotalIntensity(int bm, int i=0) const; AliLHCDipValF* GetTotalIntensityAv(int bm, int i=0) const; AliLHCDipValF* GetIntensityPerBunch(int bm, int i=0) const; AliLHCDipValF* GetEmittanceH(int bm, int i=0) const; AliLHCDipValF* GetEmittanceV(int bm, int i=0) const; AliLHCDipValF* GetBeamSigmaH(int bm, int i=0) const; AliLHCDipValF* GetBeamSigmaV(int bm, int i=0) const; AliLHCDipValF* GetLuminosityTotal(int lr, int i=0) const; AliLHCDipValF* GetLuminosityPerBunch(int lr, int i=0) const; AliLHCDipValI* GetLuminosityAcqMode(int lr, int i=0) const; AliLHCDipValF* GetCrossAngle(int lr, int i=0) const; AliLHCDipValC* GetInjectionScheme(int i=0) const; AliLHCDipValF* GetRCBetaStar(int i=0) const; AliLHCDipValF* GetRCAngleH(int i=0) const; AliLHCDipValF* GetRCAngleV(int i=0) const; AliLHCDipValF* GetCollimJawPos(int coll, int jaw, int i=0) const; // void FlagInteractingBunches(const Int_t beam1[2],const Int_t beam2[2]); TObject* FindRecValidFor(int start,int nrec, double tstamp) const; AliLHCDipValI* GetBunchConfigMeasured(int beam,double tstamp) const; AliLHCDipValI* GetBunchConfigDeclared(int beam,double tstamp) const; Int_t GetNInteractingBunchesMeasured(int i=0) const; Int_t GetNInteractingBunchesDeclared(int i=0) const; Int_t IsPilotPresent(int i=0) const; // // return array with beginning [0] and number of records for corresponding info (in the fData) const Int_t* GetOffsBunchConfigMeasured(int bm) const {return GoodPairID(bm)?fBunchConfMeas[bm]:0;} const Int_t* GetOffsBunchConfigDeclared(int bm) const {return GoodPairID(bm)?fBunchConfDecl[bm]:0;} const Int_t* GetOffsBunchLengths(int bm) const {return GoodPairID(bm)?fBunchLengths[bm]:0;} const Int_t* GetOffsTotalIntensity(int bm) const {return GoodPairID(bm)?fIntensTotal[bm]:0;} const Int_t* GetOffsTotalIntensityAv(int bm) const {return GoodPairID(bm)?fIntensTotalAv[bm]:0;} const Int_t* GetOffsIntensityPerBunch(int bm) const {return GoodPairID(bm)?fIntensPerBunch[bm]:0;} const Int_t* GetOffsEmittanceH(int bm) const {return GoodPairID(bm)?fEmittanceH[bm]:0;} const Int_t* GetOffsEmittanceV(int bm) const {return GoodPairID(bm)?fEmittanceV[bm]:0;} const Int_t* GetOffsBeamSigmaH(int bm) const {return GoodPairID(bm)?fBeamSigmaH[bm]:0;} const Int_t* GetOffsBeamSigmaV(int bm) const {return GoodPairID(bm)?fBeamSigmaV[bm]:0;} // const Int_t* GetOffsLuminosityTotal(int lr) const {return GoodPairID(lr)?fLuminTotal[lr]:0;} const Int_t* GetOffsLuminosityPerBunch(int lr) const {return GoodPairID(lr)?fLuminPerBC[lr]:0;} const Int_t* GetOffsLuminosityAcqMode(int lr) const {return GoodPairID(lr)?fLuminAcqMode[lr]:0;} const Int_t* GetOffsCrossingAngle(int lr) const {return GoodPairID(lr)?fCrossAngle[lr]:0;} // const Int_t* GetOffsInjectionScheme() const {return fRCInjScheme;} const Int_t* GetOffsRCBetaStar() const {return fRCBeta;} const Int_t* GetOffsRCAngleH() const {return fRCAngH;} const Int_t* GetOffsRCAngleV() const {return fRCAngV;} // const Int_t* GetOffsCollimatorJawPos(int coll,int jaw) const; // const TObjArray& GetData() const {return fData;} // // analysis methods Int_t GetMeanIntensity(int beamID, Double_t &colliding, Double_t &noncolliding) const; // protected: // Bool_t FillData(double tmin=0, double tmax=1.e20); virtual void Clear(const Option_t *opt=""); void PrintAux(Bool_t full,const Int_t refs[2],const Option_t *opt="") const; TObjArray* GetDCSEntry(const char* key,int &entry,int &last,double tmin,double tmax) const; Int_t FillScalarRecord( int refs[2], const char* rec, const char* recErr=0); Int_t FillBunchConfig( int refs[2], const char* rec); Int_t FillStringRecord( int refs[2], const char* rec); Int_t FillAcqMode( int refs[2], const char* rec); Int_t FillBunchInfo( int refs[2], const char* rec,int ibm, Bool_t inRealSlots); Int_t FillBCLuminosities(int refs[2], const char* rec, const char* recErr, Int_t useBeam); // Int_t ExtractInt(AliDCSArray* dcsArray,Int_t el) const; Double_t ExtractDouble(AliDCSArray* dcsArray,Int_t el) const; TString& ExtractString(AliDCSArray* dcsArray) const; AliLHCData(const AliLHCData& src) : TObject(src),fTMin(0),fTMax(0),fFillNumber(0),fData(0),fFile2Process(0),fMap2Process(0) { /*dummy*/ } AliLHCData& operator=(const AliLHCData& ) { /*dummy*/ return *this;} Int_t TimeDifference(double v1,double v2,double tol=0.9) const; Bool_t IzZero(double val, double tol=1e-16) const {return TMath::Abs(val)=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