"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
//\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
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
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
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
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
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
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
}\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
// 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
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
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