//RandomDataPeriod.h // //randomly provides a runnumber from the total dataset //based on the luminosity, to be used e.g. for trigger //selection or detector defects modelling in MC. // //Usage: // //In header/constructor, do: //#include "RandomDataPeriod.h" //RandomDataPeriod mc_dataperiod; // //In event-loop, do: //mc_dataperiod.SetSeed(EventNumber); //int dataperiodformc = mc_dataperiod.GetDataPeriod(); // // //v00-00-00: initial version //GRL used: data11_7TeV.periodAllYear_DetStatus-v13-pro08-02_WZjets_allchannels.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/35809b/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/35809b/data11_7TeV.periodAllYear_DetStatus-v13-pro08-02_WZjets_allchannels.xml --plots // //v00-00-01: update data runs up to period F2 //GRL used: data11_7TeV.periodAllYear_DetStatus-v15-pro08-03_WZjets_allchannels.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/d6d5bb/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/d6d5bb/data11_7TeV.periodAllYear_DetStatus-v15-pro08-03_WZjets_allchannels.xml --plots // //v00-00-02: update data runs up to period G3 //GRL used: data11_7TeV.periodAllYear_DetStatus-v16-pro08-03_WZjets_allchannels.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/4bad87/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/4bad87/data11_7TeV.periodAllYear_DetStatus-v16-pro08-03_WZjets_allchannels.xml // //v00-00-03: still data runs up to period G3, but adjusting lumi for run 182886 (changed in DB after v00-00-02) //GRL used: data11_7TeV.periodAllYear_DetStatus-v16-pro08-03_WZjets_allchannels.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/b2a056/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/b2a056/data11_7TeV.periodAllYear_DetStatus-v16-pro08-03_WZjets_allchannels.xml // //v00-00-04: update data runs up to period G5 //GRL used: data11_7TeV.periodAllYear_DetStatus-v17-pro08-03_WZjets_allchannels.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/9407aa/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/9407aa/data11_7TeV.periodAllYear_DetStatus-v17-pro08-03_WZjets_allchannels.xml --plots // //v00-00-05: Drop period B2 data; use D-G5 only //GRL used: data11_7TeV.periodAllYear_DetStatus-v17-pro08-03_WZjets_allchannels_NOB2.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/29ad56/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/29ad56/data11_7TeV.periodAllYear_DetStatus-v17-pro08-03_WZjets_allchannels_NOB2.xml --plots // //v00-00-06: update data runs up to period H1 //GRL used: data11_7TeV.periodAllYear_DetStatus-v18-pro08-04_WZjets_allchannels_NOB2.xml //Lumi output: https://atlas-datasummary.cern.ch/lumicalc/results/c56e2/result.html //iLumiCalc.exe --lumitag=OflLumi-7TeV-001 --livetrigger=L1_EM14 --trigger=EF_mu18_MG --xml=/tmp/lumifiles/c56e2/data11_7TeV.periodAllYear_DetStatus-v18-pro08-04_WZjets_allchannels_NOB2.xml --plots // //v00-00-07: Adjust lumi values of runs from _previous_ iterations to current lumi DB output (v00-00-06) // //author: Marc-Andre Pleier (pleier@fnal.gov) #include #include using namespace std; class RandomDataPeriod { private: TRandom3 *random3; map runvslumi; double totallumi; public: RandomDataPeriod() { random3 = new TRandom3(0); //initialize the run versus luminosity map... //Drop B2 data: v00-00-05 //runvslumi[178044] = 4.69356554; //runvslumi[178047] = 0.0815992; //runvslumi[178109] = 6.49309456; runvslumi[179710] = 4.2714689; runvslumi[179725] = 2.1663491; runvslumi[179739] = 2.8773645; runvslumi[179771] = 1.2908196; runvslumi[179804] = 7.352822; runvslumi[179938] = 0.9938799; runvslumi[179939] = 3.6641544; runvslumi[179940] = 0.1214327; runvslumi[180122] = 5.59870518; runvslumi[180124] = 7.551201; runvslumi[180139] = 7.67486; runvslumi[180144] = 3.7787184; runvslumi[180149] = 3.5313734; runvslumi[180153] = 8.7897136; runvslumi[180164] = 19.1044074; runvslumi[180212] = 0.123905; runvslumi[180225] = 17.0651767; runvslumi[180241] = 4.7436819; runvslumi[180242] = 5.2623777; runvslumi[180309] = 9.536416; runvslumi[180400] = 14.5061562; runvslumi[180448] = 1.1514746; runvslumi[180481] = 21.077817; runvslumi[180614] = 2.8427428; runvslumi[180636] = 24.0762511; runvslumi[180664] = 2.6691203; runvslumi[180710] = 12.0222558; runvslumi[182013] = 0.02450373; runvslumi[182161] = 2.89695925; runvslumi[182284] = 13.7985457; runvslumi[182346] = 1.381648; runvslumi[182372] = 12.7466346; runvslumi[182424] = 20.7027373; runvslumi[182449] = 3.3108549; runvslumi[182450] = 1.4881103; runvslumi[182454] = 7.6198907; runvslumi[182455] = 0.4896149; runvslumi[182456] = 19.3304581; runvslumi[182486] = 24.9564878; runvslumi[182516] = 9.0405483; runvslumi[182518] = 1.301104; runvslumi[182519] = 2.10084; runvslumi[182726] = 4.2975698; runvslumi[182747] = 26.05647256; runvslumi[182766] = 4.0720353; runvslumi[182787] = 30.728073; runvslumi[182796] = 27.4835577; runvslumi[182879] = 4.832184; runvslumi[182886] = 3.937492; runvslumi[182997] = 3.36826; runvslumi[183003] = 38.9811983; runvslumi[183021] = 20.7980917; runvslumi[183038] = 1.14952; runvslumi[183045] = 15.8182843; runvslumi[183054] = 8.0221817; runvslumi[183078] = 1.7380961; runvslumi[183079] = 0.8962474; runvslumi[183081] = 40.2935306; runvslumi[183127] = 11.5765513; runvslumi[183129] = 6.3219663; runvslumi[183130] = 18.1335513; runvslumi[183216] = 27.6586325; runvslumi[183272] = 12.2326153; runvslumi[183286] = 23.93399; runvslumi[183347] = 27.3460143; runvslumi[183391] = 20.183506; runvslumi[183407] = 10.3365642; runvslumi[183412] = 0.866214; runvslumi[183426] = 25.5969094; runvslumi[183462] = 42.0022505; runvslumi[183544] = 21.755164; runvslumi[183580] = 2.845458; runvslumi[183581] = 22.5080096; runvslumi[183602] = 0.781345; runvslumi[183780] = 42.7473035; runvslumi[183963] = 8.6456971; runvslumi[184022] = 37.9581668; runvslumi[184066] = 1.909748; runvslumi[184072] = 4.377389; runvslumi[184074] = 0.790583; runvslumi[184088] = 6.2392247; runvslumi[184130] = 47.2983884; runvslumi[184169] = 40.7695573; //calculate total lumi totallumi = 0.; const map< int, double >::const_iterator itend = runvslumi.end(); for(map< int, double >::iterator it = runvslumi.begin(); it != itend; ++it) { totallumi += it->second; } cout << "RandomDataPeriod has been initialised with a total lumi of "<< totallumi << "." << endl; } inline void SetSeed(int seed) {random3->SetSeed(seed);} inline int GetSeed() {return random3->GetSeed();} inline double GetTotLumi() {return totallumi;} int GetDataPeriod() { double lumi = totallumi * random3->Rndm(); double lumisum = 0.; const map< int, double >::const_iterator itend = runvslumi.end(); for(map< int, double >::iterator it = runvslumi.begin(); it != itend; ++it) { lumisum += it->second; if (lumisum >= lumi) return it->first; } return 0; } };