]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliLHCData.h
AddTrial method added, changed trials to unsigned int
[u/mrichter/AliRoot.git] / STEER / AliLHCData.h
index 40a02cac51cf8fdaa4a8df429fc3c9fcefec1bdd..cac97013c5b1e1c4d442f53cbc46a64bb04967ca 100755 (executable)
@@ -37,6 +37,7 @@ class TObjArray;
 class AliDCSArray;\r
 class TString;\r
 class TMap;\r
+class AliLHCReader;\r
 \r
 \r
 class AliLHCData : public TObject\r
@@ -49,6 +50,8 @@ class AliLHCData : public TObject
   enum Collim_t {kTCTVB4L2, kTCTVB4R2, kTCLIA4R2, kNCollimators};\r
   enum ColJaw_t {kGapDn,kGapUp,kLeftDn,kLeftUp,kRightDn,kRightUp,kNJaws};\r
   enum          {kMaxBSlots = 3564};\r
+  enum          {kMarginSOR = 60*60*24*30, // use margin of 30 days for SOR, when looking for the 1st record\r
+                kMarginEOR = 60*15};      // use margin of 15 min for EOR, when looking for the last record\r
   //\r
   enum {kIntTot,kIntTotAv,kIntBunchAv,\r
        kLumAcqMode,kLumTot,kLumTotErr,kLumBunch,kLumBunchErr,kLumCrossAng,kLumCrossAngErr,\r
@@ -60,19 +63,21 @@ class AliLHCData : public TObject
   //le\r
  public:\r
   //\r
- AliLHCData() : fTMin(0),fTMax(1e10),fFillNumber(0),fData(0) {Clear();}\r
-  AliLHCData(const TMap* dcsMap, double tmin=0, double tmax=1.e10);\r
+ AliLHCData() : fTMin(0),fTMax(1e10),fFillNumber(0),fData(0),fFile2Process(0),fMap2Process(0) {Clear();}\r
+  AliLHCData(const TMap*   dcsMap,  double tmin=0, double tmax=1.e10);\r
+  AliLHCData(const Char_t* dcsFile, double tmin=0, double tmax=1.e10);\r
   virtual ~AliLHCData() {}\r
   //\r
-  Bool_t                FillData(const TMap* dcsMap, double tmin=0, double tmax=1.e20);\r
+  Bool_t                FillData(const TMap*   dcsMap,  double tmin=0, double tmax=1.e20);\r
+  Bool_t                FillData(const Char_t* dcsFile, double tmin=0, double tmax=1.e20);\r
   Double_t              GetTMin()                                    const {return fTMin;}\r
   Double_t              GetTMax()                                    const {return fTMax;}\r
   Int_t                 GetFillNumber()                              const {return fFillNumber;}\r
   void                  SetFillNumber(Int_t fill)                          {fFillNumber = fill;}\r
   void                  SetTMin(Double_t t)                                {fTMin = t<0?0:(t>1e10?1e10:t);}\r
   void                  SetTMax(Double_t t)                                {fTMax = t<0?0:(t>1e10?1e10:t);}\r
+  //\r
   virtual void          Print(const Option_t *opt="")                const;\r
-  virtual void          Clear(const Option_t *opt="");\r
   //\r
   Int_t GetNBunchConfigMeasured(int bm)           const {return GoodPairID(bm)?fBunchConfMeas[bm][kNStor]:-1;}\r
   Int_t GetNBunchConfigDeclared(int bm)           const {return GoodPairID(bm)?fBunchConfDecl[bm][kNStor]:-1;}\r
@@ -117,6 +122,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
@@ -150,21 +156,26 @@ class AliLHCData : public TObject
   //\r
   const TObjArray&  GetData()                             const {return fData;}\r
   //\r
+  // analysis methods\r
+  Int_t GetMeanIntensity(int beamID, Double_t &colliding, Double_t &noncolliding) const;\r
+  //\r
  protected:\r
   //\r
-  void                  PrintAux(Bool_t full,const Int_t refs[2]) const;\r
-  TObjArray*            GetDCSEntry(const TMap* dcsMap,const char* key,int &entry,double tmin,double tmax) const;\r
-  Int_t                 FillScalarRecord(  const TMap* dcsMap, int refs[2], const char* rec, const char* recErr=0);\r
-  Int_t                 FillBunchConfig(   const TMap* dcsMap, int refs[2], const char* rec);\r
-  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
+  Bool_t                FillData(double tmin=0, double tmax=1.e20);\r
+  virtual void          Clear(const Option_t *opt="");\r
+  void                  PrintAux(Bool_t full,const Int_t refs[2],const Option_t *opt="") const;\r
+  TObjArray*            GetDCSEntry(const char* key,int &entry,int &last,double tmin,double tmax) const;\r
+  Int_t                 FillScalarRecord(  int refs[2], const char* rec, const char* recErr=0);\r
+  Int_t                 FillBunchConfig(   int refs[2], const char* rec);\r
+  Int_t                 FillStringRecord(  int refs[2], const char* rec);\r
+  Int_t                 FillAcqMode(       int refs[2], const char* rec);\r
+  Int_t                 FillBunchInfo(     int refs[2], const char* rec,int ibm, Bool_t inRealSlots);\r
+  Int_t                 FillBCLuminosities(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
   TString&              ExtractString(AliDCSArray* dcsArray)          const;\r
- AliLHCData(const AliLHCData& src) : TObject(src),fTMin(0),fTMax(0),fFillNumber(0),fData(0) { /*dummy*/ }\r
+ AliLHCData(const AliLHCData& src) : TObject(src),fTMin(0),fTMax(0),fFillNumber(0),fData(0),fFile2Process(0),fMap2Process(0) { /*dummy*/ }\r
   AliLHCData& operator=(const AliLHCData& ) { /*dummy*/ return *this;}\r
   Int_t                 TimeDifference(double v1,double v2,double tol=0.9) const;\r
   Bool_t                IzZero(double val, double tol=1e-16)         const {return TMath::Abs(val)<tol;}\r
@@ -209,6 +220,11 @@ class AliLHCData : public TObject
   static const Char_t *fgkDCSNames[];                 // beam related DCS names to extract\r
   static const Char_t *fgkDCSColNames[];              // collimators to extract\r
   static const Char_t *fgkDCSColJaws[];               // names of collimator pieces\r
+  //\r
+ private:\r
+  // non-persistent objects used at the filling time\r
+  const Char_t*   fFile2Process;                      //! name of DCS file\r
+  const TMap*     fMap2Process;                       //! DCS map to process \r
 \r
   ClassDef(AliLHCData,1)\r
 };\r
@@ -224,80 +240,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