]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Changed default behaviour of processor to consider the time span
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Apr 2010 13:16:18 +0000 (13:16 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Apr 2010 13:16:18 +0000 (13:16 +0000)
SOR-margin : EOR+margin (margin=30days). Can be changed by overriding
defaults in the constructor: ignoreSOR and ignoreEOR.
Improved time-stamp printout

STEER/AliLHCData.cxx
STEER/AliLHCData.h
STEER/AliLHCDipValT.h

index 16867b6b47d4db2e397f8c664bf87a12986342bf..d9b3da3276f37a3dd4d48096759f4a5a37ce2d53 100755 (executable)
@@ -94,16 +94,20 @@ const Char_t* AliLHCData::fgkDCSColJaws[] = {
   "left_upstream","right_downstream","right_upstream"};\r
 \r
 //___________________________________________________________________\r
-AliLHCData::AliLHCData(const TMap* dcsMap, double tmin, double tmax)\r
+AliLHCData::AliLHCData(const TMap* dcsMap, double tmin, double tmax, Bool_t ignoreSOR,Bool_t ignoreEOR)\r
   : fTMin(0),fTMax(0),fFillNumber(0),fData(0),fFile2Process(0),fMap2Process(0)\r
 {\r
+  SetIgnoreSOR(ignoreSOR);\r
+  SetIgnoreEOR(ignoreEOR);\r
   FillData(dcsMap,tmin,tmax);\r
 }\r
 \r
 //___________________________________________________________________\r
-AliLHCData::AliLHCData(const Char_t* dcsFile, double tmin, double tmax)\r
+AliLHCData::AliLHCData(const Char_t* dcsFile, double tmin, double tmax, Bool_t ignoreSOR,Bool_t ignoreEOR)\r
   : fTMin(0),fTMax(0),fFillNumber(0),fData(0),fFile2Process(dcsFile),fMap2Process(0)\r
 {\r
+  SetIgnoreSOR(ignoreSOR);\r
+  SetIgnoreEOR(ignoreEOR);\r
   FillData(dcsFile,tmin,tmax);\r
 }\r
 \r
@@ -140,7 +144,9 @@ Bool_t AliLHCData::FillData(double tmin, double tmax)
   //\r
   // -------------------------- extract Fill Number\r
   int iEntry;\r
-  TObjArray* arr = GetDCSEntry(fgkDCSNames[kFillNum],iEntry,fTMin,fTMax);\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  TObjArray* arr = GetDCSEntry(fgkDCSNames[kFillNum],iEntry,tmin,tmax);\r
   if (arr) SetFillNumber( ExtractInt( (AliDCSArray*)arr->At(iEntry), 0) );\r
   if (fFile2Process) delete arr; // array was created on demand\r
   //\r
@@ -322,12 +328,17 @@ Int_t AliLHCData::FillScalarRecord(int refs[2], const char* rec, const char* rec
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   int dim = 1;\r
   if (recErr) {\r
-    if ( !(arrE=GetDCSEntry(recErr,iEntryE,fTMin,fTMax)) ) nEntriesE = -999;\r
+    if ( !(arrE=GetDCSEntry(recErr,iEntryE,tmin,tmax)) ) nEntriesE = -999;\r
     else nEntriesE = arrE->GetEntriesFast();\r
     dim += 1;\r
   }\r
@@ -382,7 +393,12 @@ Int_t AliLHCData::FillBunchConfig(int refs[2],const char* rec)
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   AliLHCDipValI* prevRecI=0;\r
@@ -423,7 +439,12 @@ Int_t AliLHCData::FillAcqMode(int refs[2],const char* rec)
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   AliLHCDipValI* prevRecI=0;\r
@@ -460,7 +481,12 @@ Int_t AliLHCData::FillStringRecord(int refs[2],const char* rec)
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   while (iEntry<nEntries) {\r
@@ -496,7 +522,12 @@ Int_t AliLHCData::FillBunchInfo(int refs[2],const char* rec, int ibm, Bool_t inR
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   while (iEntry<nEntries) {\r
@@ -549,7 +580,12 @@ Int_t AliLHCData::FillBCLuminosities(int refs[2],const char* rec, const char* re
   refs[kStart] = fData.GetEntriesFast();\r
   refs[kNStor] = 0;\r
   //\r
-  if ( !(arr=GetDCSEntry(rec,iEntry,fTMin,fTMax)) ) return -1;\r
+  double tmin = fTMin;\r
+  double tmax = fTMax;\r
+  if (IsSORIgnored()) tmin -= kTimeMargin;\r
+  if (IsSORIgnored()) tmax += kTimeMargin;\r
+  //\r
+  if ( !(arr=GetDCSEntry(rec,iEntry,tmin,tmax)) ) return -1;\r
   nEntries = arr->GetEntriesFast();\r
   //\r
   while (iEntry<nEntries) {\r
@@ -585,7 +621,7 @@ Int_t AliLHCData::FillBCLuminosities(int refs[2],const char* rec, const char* re
     }\r
     //\r
     if (recErr) {\r
-      if ( !(arrE=GetDCSEntry(recErr,iEntryE,fTMin,fTMax)) || iEntryE<0 ) nEntriesE = -999;\r
+      if ( !(arrE=GetDCSEntry(recErr,iEntryE,tmin,tmax)) || iEntryE<0 ) nEntriesE = -999;\r
       else nEntriesE = arrE->GetEntriesFast();\r
       dim += 1;\r
     }\r
@@ -703,106 +739,108 @@ void AliLHCData::Print(const Option_t* opt) const
   // print full info\r
   TString opts = opt;\r
   opts.ToLower();\r
+  Bool_t utcTime = opts.Contains("loc") ? kFALSE:kTRUE;\r
   Bool_t full = kTRUE;\r
   if (!opts.Contains("f")) {\r
     printf("Use Print(\"f\") to print full info\n");\r
     printf("Printing short info:\n<RecordType>(number of records): <TimeStamp, value> for 1st record only\n");\r
+    printf("Ignoring strict time of SOR: %s, EOR: %s\n",IsSORIgnored()?"ON":"OFF",IsEORIgnored()?"ON":"OFF");\r
     full = kFALSE;\r
   }\r
-  TString sdtmn = AliLHCDipValI::TimeAsString(fTMin);\r
-  TString sdtmx = AliLHCDipValI::TimeAsString(fTMax);\r
-  printf("Fill#%6d Validity: %s - %s\n",fFillNumber,sdtmn.Data(),sdtmx.Data());\r
+  TString sdtmn = AliLHCDipValI::TimeAsString(fTMin,utcTime);\r
+  TString sdtmx = AliLHCDipValI::TimeAsString(fTMax,utcTime);\r
+  printf("Fill#%6d Validity: %s - %s (%s)\n",fFillNumber,sdtmn.Data(),sdtmx.Data(),utcTime ? "UTC":"LOC");\r
   //\r
   printf("********** SETTINGS FROM RUN CONTROL **********\n");\r
   //\r
   printf("* %-38s","Injection Scheme");\r
-  PrintAux(full,fRCInjScheme);\r
+  PrintAux(full,fRCInjScheme,opts);\r
   //\r
   printf("* %-38s","Beta Star");\r
-  PrintAux(full,fRCBeta);\r
+  PrintAux(full,fRCBeta,opts);\r
   //\r
   printf("* %-38s","Horisontal Crossing Angle");\r
-  PrintAux(full,fRCAngH);\r
+  PrintAux(full,fRCAngH,opts);\r
   //\r
   printf("* %-38s","Vertical   Crossing Angle");\r
-  PrintAux(full,fRCAngV);\r
+  PrintAux(full,fRCAngV,opts);\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d filling  [- interacts at IR2!]  ",ib+1);\r
-    PrintAux(full,fBunchConfDecl[ib]);\r
+    PrintAux(full,fBunchConfDecl[ib],opts);\r
   }\r
   //\r
   printf("\n**********       MEASURED DATA       **********\n");\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d filling  [- interacts at IR2!]  ",ib+1);\r
-    PrintAux(full,fBunchConfMeas[ib]);\r
+    PrintAux(full,fBunchConfMeas[ib],opts);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d total intensity                 ",ib+1);\r
-    PrintAux(full,fIntensTotal[ib]);\r
+    PrintAux(full,fIntensTotal[ib],opts);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d total intensity (bunch average) ",ib+1);\r
-    PrintAux(full,fIntensTotalAv[ib]);\r
+    PrintAux(full,fIntensTotalAv[ib],opts);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d intensity per bunch             ",ib+1);\r
-    PrintAux(full,fIntensPerBunch[ib]);\r
+    PrintAux(full,fIntensPerBunch[ib],opts);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d bunch lengths                   ",ib+1);\r
-    PrintAux(full,fBunchLengths[ib]);\r
+    PrintAux(full,fBunchLengths[ib],opts);\r
   } \r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d Horisontal emittance            ",ib+1);\r
-    PrintAux(full,fEmittanceH[ib]);\r
+    PrintAux(full,fEmittanceH[ib],opts);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d Vertical emittance              ",ib+1);\r
-    PrintAux(full,fEmittanceV[ib]);\r
+    PrintAux(full,fEmittanceV[ib],opts);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d Horisontal sigma                ",ib+1);\r
-    PrintAux(full,fBeamSigmaH[ib]);\r
+    PrintAux(full,fBeamSigmaH[ib],opts);\r
   }\r
   //\r
   for (int ib=0;ib<2;ib++) {\r
     printf("* Beam%d Vertical sigma                  ",ib+1);\r
-    PrintAux(full,fBeamSigmaV[ib]);\r
+    PrintAux(full,fBeamSigmaV[ib],opts);\r
   }\r
   //\r
   for (int lr=0;lr<2;lr++) {\r
     printf("* Total luminosity from BRANB_4%c2       ",lr ? 'R':'L');\r
-    PrintAux(full,fLuminTotal[lr]);\r
+    PrintAux(full,fLuminTotal[lr],opts);\r
   } \r
   //\r
   for (int lr=0;lr<2;lr++) {\r
     printf("* Luminosity acq.mode, BRANB_4%c2        ",lr ? 'R':'L');\r
-    PrintAux(full,fLuminAcqMode[lr],"bit");\r
+    PrintAux(full,fLuminAcqMode[lr],opts+"bit");\r
   } \r
   //\r
   for (int lr=0;lr<2;lr++) {\r
     printf("* Luminosity per BC from BRANB_4%c2      ",lr ? 'R':'L');\r
-    PrintAux(full,fLuminPerBC[lr]);\r
+    PrintAux(full,fLuminPerBC[lr],opts);\r
   }\r
   //\r
   for (int lr=0;lr<2;lr++) {\r
     printf("* Crossing angle, side %c                ",lr ? 'R':'L');\r
-    PrintAux(full,fCrossAngle[lr]);\r
+    PrintAux(full,fCrossAngle[lr],opts);\r
   }\r
   //\r
   for (int coll=0;coll<kNCollimators;coll++)\r
     for (int jaw=0;jaw<kNJaws;jaw++) {\r
       printf("* Collimator %10s:%16s",fgkDCSColNames[coll],fgkDCSColJaws[jaw]);\r
-      PrintAux(full,fCollimators[coll][jaw]);\r
+      PrintAux(full,fCollimators[coll][jaw],opts);\r
     }\r
   //\r
 }\r
index c807ae8a883c794616a21cb37e1b12a5bd09ef02..6aff32da30329e775efd72bde9b783f2d38ec647 100755 (executable)
@@ -50,6 +50,9 @@ 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          {kIgnoreSOR = BIT(14), // if set: take all values with t>=SOR - margin, otherwise t>=SOR\r
+                kIgnoreEOR = BIT(15), // if set: take all values with t>=EOR + margin, otherwise t<=EOR\r
+                kTimeMargin = 60*60*24*30}; // use margin of 30 days\r
   //\r
   enum {kIntTot,kIntTotAv,kIntBunchAv,\r
        kLumAcqMode,kLumTot,kLumTotErr,kLumBunch,kLumBunchErr,kLumCrossAng,kLumCrossAngErr,\r
@@ -62,18 +65,23 @@ class AliLHCData : public TObject
  public:\r
   //\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
+  AliLHCData(const TMap*   dcsMap,  double tmin=0, double tmax=1.e10, Bool_t ignoreSOR=kTRUE,Bool_t ignoreEOR=kTRUE);\r
+  AliLHCData(const Char_t* dcsFile, double tmin=0, double tmax=1.e10, Bool_t ignoreSOR=kTRUE,Bool_t ignoreEOR=kTRUE);\r
   virtual ~AliLHCData() {}\r
   //\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
+  Bool_t                IsSORIgnored()                               const {return TestBit(kIgnoreSOR);}\r
+  Bool_t                IsEORIgnored()                               const {return TestBit(kIgnoreEOR);}\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
+  void                  SetIgnoreSOR(Bool_t v=kTRUE)                       {SetBit(kIgnoreSOR,v);}\r
+  void                  SetIgnoreEOR(Bool_t v=kTRUE)                       {SetBit(kIgnoreEOR,v);}\r
+  //\r
   virtual void          Print(const Option_t *opt="")                const;\r
   //\r
   Int_t GetNBunchConfigMeasured(int bm)           const {return GoodPairID(bm)?fBunchConfMeas[bm][kNStor]:-1;}\r
index fedfe78ba24e6bfacae635afa581faa5605ddf33..18c102e9d1642350040737ca7e3bf766fa231e53 100755 (executable)
@@ -114,10 +114,12 @@ template<class Element>
 Char_t* AliLHCDipValT<Element>::TimeAsString(double t, Bool_t utc)
 {
   // time as string in UTC or local format
+  static char buff[22];
   time_t tt = (time_t) t;
-  char* st = utc ? asctime(gmtime(&tt)) : ctime(&tt);
-  *(strchr(st,'\n')) = 0;
-  return st;
+  struct tm *time = utc ? gmtime(&tt) : localtime(&tt);
+  sprintf(buff,"%02d:%02d:%02d %02d/%02d/%04d",time->tm_hour,time->tm_min,time->tm_hour,
+         time->tm_mday,time->tm_mon+1,time->tm_year+1900);
+  return (char*)buff;
 }
 
 //__________________________________________________________________________