Reverted to floats with range checking. Protection for BWD compatibility in GetMeanIn...
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Apr 2012 18:18:24 +0000 (18:18 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Apr 2012 18:18:24 +0000 (18:18 +0000)
STEER/STEER/AliLHCData.cxx
STEER/STEER/AliLHCData.h
STEER/STEER/AliLHCDipValT.h

index 8686ffc..8c2e022 100755 (executable)
@@ -258,9 +258,9 @@ TObjArray* AliLHCData::GetDCSEntry(const char* key,int &entry,int &last,double t
   if (!found) {\r
     entry = -1;\r
     TString str;\r
-    str += AliLHCDipValD::TimeAsString(tmin);\r
+    str += AliLHCDipValF::TimeAsString(tmin);\r
     str += " : ";\r
-    str += AliLHCDipValD::TimeAsString(tmax);\r
+    str += AliLHCDipValF::TimeAsString(tmax);\r
     AliWarning(Form("All entries for %s are outside the requested range:\n%s",key,str.Data()));\r
     if (fkMap2Process) delete arr; // created on demand\r
     return 0;\r
@@ -355,7 +355,7 @@ Int_t AliLHCData::FillScalarRecord(int refs[2], const char* rec, const char* rec
     AliDCSArray *dcsVal = (AliDCSArray*) arr->At(iFirst++);\r
     double tstamp = dcsVal->GetTimeStamp();\r
     //\r
-    AliLHCDipValD* curValD = new AliLHCDipValD(dim,tstamp);  // start new period\r
+    AliLHCDipValF* curValD = new AliLHCDipValF(dim,tstamp);  // start new period\r
     double vcheck = ExtractDouble(dcsVal,0);     // value\r
     if (TMath::Abs(vcheck) > maxAbsVal) {\r
       AliError(Form("ANOMALOUS VALUE %e for slot %d of %s: exceeds %e",vcheck, 0, rec, maxAbsVal));\r
@@ -540,7 +540,7 @@ Int_t AliLHCData::FillBunchInfo(int refs[2],const char* rec, int ibm, Bool_t inR
       continue;\r
     }\r
     double* dcsArr = dcsVal->GetDouble();\r
-    AliLHCDipValD* curValD = new AliLHCDipValD(nbunch,tstamp);\r
+    AliLHCDipValF* curValD = new AliLHCDipValF(nbunch,tstamp);\r
     for (int i=nbunch;i--;) {\r
       int ind = inRealSlots ? (*bconf)[i]/10 : i;\r
       if (ind>nSlots) {\r
@@ -613,7 +613,7 @@ Int_t AliLHCData::FillBCLuminosities(int refs[2],const char* rec, const char* re
       arrE=GetDCSEntry(recErr,iFirstE,iLastE,fTMin,fTMax);\r
       dim += 1;\r
     }\r
-    AliLHCDipValD* curValD = new AliLHCDipValD(dim,tstamp);\r
+    AliLHCDipValF* curValD = new AliLHCDipValF(dim,tstamp);\r
     int cnt = 0;\r
     for (int i=0;i<nbunch;i++) {\r
       int slot = (*bconf)[i];\r
@@ -998,9 +998,12 @@ Int_t AliLHCData::GetMeanIntensity(int beamID, Double_t &colliding, Double_t &no
   //\r
   for (int irec=0;irec<nrec;irec++) {\r
     //\r
-    AliLHCDipValD* rInt = GetIntensityPerBunch(beamID,irec);\r
+    AliLHCDipValD* rIntD = 0;\r
+    AliLHCDipValF* rIntF = GetIntensityPerBunch(beamID,irec);\r
+    // for BWD compatibility of some periods\r
+    if (rIntF->IsA() == AliLHCDipValD::Class()) {rIntD=(AliLHCDipValD*)rIntF; rIntF=0;}\r
     for (int ib=0;ib<nb;ib++) {\r
-      double val = rInt->GetValue(ib);\r
+      double val = rIntF ? rIntF->GetValue(ib) : rIntD->GetValue(ib);\r
       if (val<0) continue;\r
       int bID = conf->GetValue(ib);\r
       // check if this is a triggered bunch\r
index 8fd33c2..2813234 100755 (executable)
@@ -103,24 +103,24 @@ class AliLHCData : public TObject
   Int_t GetNCollimatorJawPos(int coll,int jaw)    const;\r
   //\r
   AliLHCDipValI* GetBunchConfigMeasured(int bm, int i=0)  const;\r
-  AliLHCDipValD* GetBunchLengths(int bm, int i=0)         const;\r
+  AliLHCDipValF* GetBunchLengths(int bm, int i=0)         const;\r
   AliLHCDipValI* GetBunchConfigDeclared(int bm, int i=0)  const;\r
-  AliLHCDipValD* GetTotalIntensity(int bm, int i=0)       const;\r
-  AliLHCDipValD* GetTotalIntensityAv(int bm, int i=0)     const;\r
-  AliLHCDipValD* GetIntensityPerBunch(int bm, int i=0)    const;\r
-  AliLHCDipValD* GetEmittanceH(int bm, int i=0)           const;\r
-  AliLHCDipValD* GetEmittanceV(int bm, int i=0)           const;\r
-  AliLHCDipValD* GetBeamSigmaH(int bm, int i=0)           const;\r
-  AliLHCDipValD* GetBeamSigmaV(int bm, int i=0)           const;\r
-  AliLHCDipValD* GetLuminosityTotal(int lr, int i=0)      const;\r
-  AliLHCDipValD* GetLuminosityPerBunch(int lr, int i=0)   const;\r
+  AliLHCDipValF* GetTotalIntensity(int bm, int i=0)       const;\r
+  AliLHCDipValF* GetTotalIntensityAv(int bm, int i=0)     const;\r
+  AliLHCDipValF* GetIntensityPerBunch(int bm, int i=0)    const;\r
+  AliLHCDipValF* GetEmittanceH(int bm, int i=0)           const;\r
+  AliLHCDipValF* GetEmittanceV(int bm, int i=0)           const;\r
+  AliLHCDipValF* GetBeamSigmaH(int bm, int i=0)           const;\r
+  AliLHCDipValF* GetBeamSigmaV(int bm, int i=0)           const;\r
+  AliLHCDipValF* GetLuminosityTotal(int lr, int i=0)      const;\r
+  AliLHCDipValF* GetLuminosityPerBunch(int lr, int i=0)   const;\r
   AliLHCDipValI* GetLuminosityAcqMode(int lr, int i=0)    const;\r
-  AliLHCDipValD* GetCrossAngle(int lr, int i=0)           const;\r
+  AliLHCDipValF* GetCrossAngle(int lr, int i=0)           const;\r
   AliLHCDipValC* GetInjectionScheme(int i=0)              const;\r
-  AliLHCDipValD* GetRCBetaStar(int i=0)                   const;\r
-  AliLHCDipValD* GetRCAngleH(int i=0)                     const; \r
-  AliLHCDipValD* GetRCAngleV(int i=0)                     const; \r
-  AliLHCDipValD* GetCollimJawPos(int coll, int jaw, int i=0) const;\r
+  AliLHCDipValF* GetRCBetaStar(int i=0)                   const;\r
+  AliLHCDipValF* GetRCAngleH(int i=0)                     const; \r
+  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
@@ -244,77 +244,77 @@ inline AliLHCDipValI* AliLHCData::GetBunchConfigMeasured(int bm, int i) const {
   return (GoodPairID(bm) && i>=0 && i<fBunchConfMeas[bm][kNStor]) ? (AliLHCDipValI*)fData[fBunchConfMeas[bm][kStart]+i]:0;\r
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetBunchLengths(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBunchLengths[bm][kNStor]) ? (AliLHCDipValD*)fData[fBunchLengths[bm][kStart]+i]:0;\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
 }\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetTotalIntensity(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensTotal[bm][kNStor]) ? (AliLHCDipValD*)fData[fIntensTotal[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetTotalIntensityAv(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensTotalAv[bm][kNStor]) ? (AliLHCDipValD*)fData[fIntensTotalAv[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetIntensityPerBunch(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fIntensPerBunch[bm][kNStor]) ? (AliLHCDipValD*)fData[fIntensPerBunch[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetEmittanceH(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fEmittanceH[bm][kNStor]) ? (AliLHCDipValD*)fData[fEmittanceH[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetEmittanceV(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fEmittanceV[bm][kNStor]) ? (AliLHCDipValD*)fData[fEmittanceV[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetBeamSigmaH(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaH[bm][kNStor]) ? (AliLHCDipValD*)fData[fBeamSigmaH[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetBeamSigmaV(int bm, int i) const { // get record\r
-  return (GoodPairID(bm) && i>=0 && i<fBeamSigmaV[bm][kNStor]) ? (AliLHCDipValD*)fData[fBeamSigmaV[bm][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetLuminosityTotal(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fLuminTotal[lr][kNStor]) ? (AliLHCDipValD*)fData[fLuminTotal[lr][kStart]+i]:0;\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetLuminosityPerBunch(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fLuminPerBC[lr][kNStor]) ? (AliLHCDipValD*)fData[fLuminPerBC[lr][kStart]+i]:0;\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
 }\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetCrossAngle(int lr, int i) const { // get record\r
-  return (GoodPairID(lr) && i>=0 && i<fCrossAngle[lr][kNStor]) ? (AliLHCDipValD*)fData[fCrossAngle[lr][kStart]+i]:0;\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
 }\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
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetRCBetaStar(int i) const { // get record\r
-  return (i>=0 && i<fRCBeta[kNStor]) ? (AliLHCDipValD*)fData[fRCBeta[kStart]+i]:0;\r
+inline AliLHCDipValF* AliLHCData::GetRCBetaStar(int i) const { // get record\r
+  return (i>=0 && i<fRCBeta[kNStor]) ? (AliLHCDipValF*)fData[fRCBeta[kStart]+i]:0;\r
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetRCAngleH(int i) const { // get record\r
-  return (i>=0 && i<fRCAngH[kNStor]) ? (AliLHCDipValD*)fData[fRCAngH[kStart]+i]:0;\r
+inline AliLHCDipValF* AliLHCData::GetRCAngleH(int i) const { // get record\r
+  return (i>=0 && i<fRCAngH[kNStor]) ? (AliLHCDipValF*)fData[fRCAngH[kStart]+i]:0;\r
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetRCAngleV(int i) const { // get record\r
-  return (i>=0 && i<fRCAngV[kNStor]) ? (AliLHCDipValD*)fData[fRCAngV[kStart]+i]:0;\r
+inline AliLHCDipValF* AliLHCData::GetRCAngleV(int i) const { // get record\r
+  return (i>=0 && i<fRCAngV[kNStor]) ? (AliLHCDipValF*)fData[fRCAngV[kStart]+i]:0;\r
 }\r
 \r
-inline AliLHCDipValD* AliLHCData::GetCollimJawPos(int coll, int jaw, int i) const { // get record\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]) ? (AliLHCDipValD*)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 b2413fc..1850c53 100755 (executable)
@@ -34,17 +34,17 @@ template<class Element> class AliLHCDipValT : public TObject
   AliLHCDipValT(const AliLHCDipValT<Element> &src);
   virtual ~AliLHCDipValT() {delete[] fArray;}
   AliLHCDipValT& operator=(const AliLHCDipValT<Element> &src);
-  Element&       operator[](Int_t i);
-  Element        operator[](Int_t i)                          const;
+  virtual Element&       operator[](Int_t i);
+  virtual Element        operator[](Int_t i)                          const;
   //
-  void                SetSize(Int_t size);
-  void                SetValue(Int_t i,Element v);
-  void                SetValues(const Element *v, Int_t n);
+  virtual void        SetSize(Int_t size);
+  virtual void        SetValue(Int_t i,Element v);
+  virtual void        SetValues(const Element *v, Int_t n);
   void                SetTimeStamp(Double_t v)                      {fTimeStamp = v;}
   // 
   Int_t               GetSizeTotal()                          const {return fSizeTot;}
-  Element             GetValue(Int_t i=0)                     const;
-  Element*            GetValues()                             const {return (Element*)fArray;}
+  virtual Element     GetValue(Int_t i=0)                     const;
+  virtual Element*    GetValues()                             const {return (Element*)fArray;}
   Double_t            GetTimeStamp()                          const {return fTimeStamp;}
   Char_t*             GetTimeAsString(Bool_t utc=kTRUE)       const {return TimeAsString(fTimeStamp,utc);}
   //
@@ -152,7 +152,7 @@ Element& AliLHCDipValT<Element>::operator[](Int_t i)
     AliError(Form("Index %d is out of range 0:%d",i,GetSizeTotal()-1));
     return fArray[0];
   }
-  return fArray[i];
+  return (Element&)fArray[i];
 }
 
 //__________________________________________________________________________
@@ -164,7 +164,7 @@ Element AliLHCDipValT<Element>::operator[](Int_t i) const
     AliError(Form("Index %d is out of range 0:%d",i,GetSizeTotal()-1));
     return 0;
   }
-  return fArray[i];
+  return (Element)fArray[i];
 }
 
 //__________________________________________________________________________
@@ -176,7 +176,7 @@ Element AliLHCDipValT<Element>::GetValue(Int_t i) const
     AliError(Form("Index %d is out of range 0:%d",i,GetSizeTotal()-1));
     return 0;
   }
-  return fArray[i];
+  return (Element)fArray[i];
 }
 
 //__________________________________________________________________________
@@ -228,15 +228,15 @@ void AliLHCDipValT<Element>::Print(const Option_t *opt) const
        }
 
       }
-      else if (tp == typeid(Double_t*).name() || tp == typeid(Float_t*).name()) printf(" %+.3e |",(Float_t)fArray[i]);
+      else if (tp == typeid(Double_t*).name() || tp == typeid(Float_t*).name()) printf(" %+.3e |",(Double_t)fArray[i]);
       else printf(" ");
       eolOK = kFALSE;
       if ( (i+1)%5 == 0) {printf("\n"); eolOK = kTRUE;}
     }
     if (IsLastSpecial()) {
       if (sz>1 && !eolOK) {printf("\n"); eolOK = kTRUE;}
-      if (tp == typeid(Double_t*).name() || tp == typeid(Float_t*).name()) {
-       printf(" Error: %+e\n",(Float_t)fArray[sz]);
+      if (tp == typeid(Double_t*).name() || tp == typeid(Double_t*).name()) {
+       printf(" Error: %+e\n",(Double_t)fArray[sz]);
        eolOK = kTRUE;
       }
     }