// Author: Gero Flucke <mailto:flucke@mail.desy.de>
//____________________________________
// GFDstarRunPeriods
// Author: Gero Flucke
// Date: May 14th, 2002
// last update: $Date: 2004/08/27 12:30:55 $
// by: $Author: flucke $
//
#include <iostream>
#include <TROOT.h>
#include <TFile.h>
#include <TH1.h>
#include <TH2.h>
#include <TF1.h>
#include <TString.h>
#include <TAxis.h>
#include <TObjArray.h>
#include "GFDstarRunPeriods.h"
using namespace std;
ClassImp(GFDstarRunPeriods)
const Double_t GFDstarRunPeriods::fgStartDmSignal = 0.142501;
const Double_t GFDstarRunPeriods::fgEndDmSignal = 0.148499;
const Double_t GFDstarRunPeriods::fgStartDmBackgr = 0.150501;
const Double_t GFDstarRunPeriods::fgEndDmBackgr = 0.167499;
GFDstarRunPeriods::GFDstarRunPeriods(Int_t trigger, const char* period)
{
// period may contain '99ePlus', '2000'
this->SetTrigger(trigger, period);
}
//____________________________________
GFDstarRunPeriods::~GFDstarRunPeriods()
{
}
//____________________________________
Bool_t GFDstarRunPeriods::SetTrigger(Int_t trigger, const char* period)
{
// period may contain '99ePlus', '2000'
TString per(period);
if(trigger == 84){
Int_t first = 0, last = 17;
Double_t runsDataLumi[18]; Int_t runs[19]; Double_t prescales[18];
// values: cf. log book 19.6.2002/13.1.2003/10.6.2004
static Int_t count = 0;
if(count++ < 10){
if(count == 10) this->Warning("SetTrigger", "last show up:");
this->Warning("SetTrigger", "outdated lumis of runperiods for ST84!");
}
// 99ePlus
runsDataLumi[0] = 0.0; runs[0] = 246156; prescales[0] = -1.; // no YECL bank
runsDataLumi[1] = 685.51; runs[1] = 246605; prescales[1] = 1.61;
runsDataLumi[2] = 726.54; runs[2] = 248679; prescales[2] = 1.59;
runsDataLumi[3] = 445.882; runs[3] = 251080; prescales[3] = 1.82;
runsDataLumi[4] = 944.401; runs[4] = 251662; prescales[4] = 2.18;
runsDataLumi[5] = 1839.529; runs[5] = 253307; prescales[5] = 1.94;
runsDataLumi[6] = 148.403; runs[6] = 256936; prescales[6] = 2.30;
runsDataLumi[7] = 860.893; runs[7] = 258544; prescales[7] = 1.76;
runsDataLumi[8] = 089.864; runs[8] = 259438; prescales[8] = 1.76;
// 2000
runsDataLumi[9] = 1252.430; runs[9] = 262204; prescales[9] = 1.52;
runsDataLumi[10] = 2235.716; runs[10] = 263381; prescales[10] = 4.24;
runsDataLumi[11] = 1667.577; runs[11] = 267501; prescales[11] = 5.95;
runsDataLumi[12] = 2563.670; runs[12] = 271601; prescales[12] = 4.05;
runsDataLumi[13] = 537.004; runs[13] = 274881; prescales[13] = 6.43;
runsDataLumi[14] = 1523.78; runs[14] = 275801; prescales[14] = 4.92;
runsDataLumi[15] = 558.839; runs[15] = 277601; prescales[15] = 6.02;
runsDataLumi[16] = 0.0; runs[16] = 278691; prescales[16] = -1.; // sh. vertex
runsDataLumi[17] = 123.097; runs[17] = 278995; prescales[17] = 7.30;
runs[18] = 279216;
if(per.Contains("99eplus", TString::kIgnoreCase)) last = 8;
if(per.Contains("2000")) first = 9;
Int_t nPer = last - first;
fRuns.Set(nPer + 2); // first run numbers of different LET1 parametrisations
fRunsDataLumi.Set(nPer + 1); // [i] is lumi for fRuns[i] => fRuns[i+1]
fPrescales.Set(nPer + 1);
for(Int_t i = 0; i <= nPer; ++i){
fRunsDataLumi[i] = runsDataLumi[i+first];
fRuns[i] = runs[i+first];
fPrescales[i] = prescales[i+first];
}
fRuns[nPer+1] = runs[nPer+first+1];
return kTRUE;
} else if(trigger == 83){
// ///// old starts
// Int_t first = 0, last = 2;
// Double_t runsDataLumi[3]; Int_t runs[4]; Double_t prescales[3];
// // values: cf. log book 19.6.2002/13.1.2003/10.6.2004:
// // 99ePlus
// runsDataLumi[0] = 0.0; runs[0] = 246156; prescales[0] = -1.; // no YECL bank
// runsDataLumi[1] = 12679.; runs[1] = 246605; prescales[1] = 1.04;
// // 2000
// runsDataLumi[2] = 38357.; runs[2] = 262204; prescales[2] = 1.20;
// runs[3] = 279216;
// //runsDataLumi[3] = 0.0; runs[3] = 278691; prescales[3] = -1.; // sh. vertex ignored
// if(per.Contains("99eplus", TString::kIgnoreCase)) last = 1;
// if(per.Contains("2000")) first = 2;
// ///// old ends
///// new starts
Int_t first = 0, last = 16;
Double_t runsDataLumi[17]; Int_t runs[18]; Double_t prescales[17];
runsDataLumi[0] = 0.0; runs[0] = 244968; prescales[0] = -1.; //no YECL
runsDataLumi[1] = 1.035e+03; runs[1] = 246605; prescales[1] = 1.06;
runsDataLumi[2] = 1.118e+03; runs[2] = 248679; prescales[2] = 1.04;
runsDataLumi[3] = 1.179e+03; runs[3] = 251080; prescales[3] = 1.06;
runsDataLumi[4] = 4.399e+03; runs[4] = 252100; prescales[4] = 1.05;
runsDataLumi[5] = 3.526e+03; runs[5] = 256000; prescales[5] = 1.02;
runsDataLumi[6] = 1.440e+03; runs[6] = 258200; prescales[6] = 1.04;
runsDataLumi[7] = 0.0; runs[7] = 259487; prescales[7] = -1.; // min bias
// 2000
runsDataLumi[8] = 1.732e+03; runs[8] = 262101; prescales[8] = 1.03;
runsDataLumi[9] = 2.262e+03; runs[9] = 263381; prescales[9] = 1.30;
runsDataLumi[10] = 5.043e+03; runs[10] = 264901; prescales[10] = 1.20;
runsDataLumi[11] =17.170e+03; runs[11] = 267501; prescales[11] = 1.18;
runsDataLumi[12] = 2.504e+03; runs[12] = 274881; prescales[12] = 1.37;
runsDataLumi[13] = 6.304e+03; runs[13] = 275801; prescales[13] = 1.18;
runsDataLumi[14] = 2.685e+03; runs[14] = 277601; prescales[14] = 1.25;
runsDataLumi[15] = 0.; runs[15] = 278687; prescales[15] = -1.; //shifted vert
runsDataLumi[16] = 0.658e+03; runs[16] = 278981; prescales[16] = 1.38;
runs[17] = 279215+1;
if(per.Contains("99eplus", TString::kIgnoreCase)) last = 7;
if(per.Contains("2000")) first = 8;
///// new ends
Int_t nPer = last - first;
fRuns.Set(nPer + 2); // first run numbers
fRunsDataLumi.Set(nPer + 1); // [i] is lumi for fRuns[i] => fRuns[i+1]
fPrescales.Set(nPer + 1);
for(Int_t i = 0; i <= nPer; ++i){
fRunsDataLumi[i] = runsDataLumi[i+first];
fRuns[i] = runs[i+first];
fPrescales[i] = prescales[i+first];
}
fRuns[nPer+1] = runs[nPer+first+1];
return kTRUE;
} else {
this->Warning("GFDstarRunPeriods", "trigger %d not supported!", trigger);
fRuns.Set(0);
fRunsDataLumi.Set(0);
fPrescales.Set(0);
return kFALSE;
}
}
//____________________________________
Int_t GFDstarRunPeriods::GetFirstRun(Int_t period) const
{
if(CheckPeriod("GetFirstRun", period)) return fRuns.At(period);//[period];
else return 0;
}
//____________________________________
Int_t GFDstarRunPeriods::GetLastRun(Int_t period) const
{
if(CheckPeriod("GetLastRun", period)) return fRuns.At(period+1);//[period+1];
else return 0;
}
//____________________________________
Double_t GFDstarRunPeriods::GetLumi(Int_t period) const
{
if(CheckPeriod("GetLumi", period)) return fRunsDataLumi.At(period);//[period];
else return 0.;
}
//____________________________________
Double_t GFDstarRunPeriods::GetPrescale(Int_t period) const
{
if(CheckPeriod("GetPrescale", period)) return fPrescales.At(period);//[period];
else return 0.;
}
//____________________________________
Int_t GFDstarRunPeriods::GetPeriod(Int_t run) const
{
// return period that run belongs to, -1 in case no period found
for(Int_t i = 0; i < this->GetNumPeriods(); ++i){
if(fRuns.At(i) <= run && fRuns.At(i+1) > run) return i;
}
return -1;
}
//____________________________________
Bool_t GFDstarRunPeriods::OutOfBounds(const char* method, Int_t period) const
{
// unused 'method'
this->Warning("OutOfBounds", "Period %d does not exist, possible are (0-%d)",
period, fRuns.GetSize()-1);
return kFALSE;
}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.