Commit af98e747 authored by Elemer Nagy's avatar Elemer Nagy
Browse files

Introduced trigger chain names into the root directory and produced random...

Introduced trigger chain names into the root directory and produced random histograms as done before in TrigBjetExample_070319/
Also corrected the relevant import statement in TrigBjetMonitorAlgorithm.py in order to be able to execute the job in a separate
    run directory
parent b3ece6a7
......@@ -4,7 +4,6 @@
from TriggerJobOpts.TriggerFlags import TriggerFlags
#monitoring_bjet_FTK = ["S_HLT_j35_boffperf_split_FTK", "E_HLT_j35_boffperf_split_FTKVtx", "E_HLT_j35_boffperf_split_FTKRefit"]
monitoring_bjet_FTK = ["S_HLT_j35_boffperf_split_FTK_L1J15_FTK", "E_HLT_j35_boffperf_split_FTKVtx_L1J15_FTK", "E_HLT_j35_boffperf_split_FTKRefit_L1J15_FTK"]
......@@ -13,34 +12,22 @@ monitoring_bjet_FTK = ["S_HLT_j35_boffperf_split_FTK_L1J15_FTK", "E_HLT_j35_boff
#General trigger chains - default values
#monitoring_bjet = ["E_HLT_j35_boffperf_split", "E_HLT_j55_boffperf", "S_HLT_j55_boffperf_split", "E_HLT_j320_boffperf", "S_HLT_j320_boffperf_split",
# "S_HLT_j225_gsc360_boffperf_split"]
#monitoring_bjet = ["S_HLT_j35_gsc55_boffperf_split", "E_HLT_j55_boffperf", "E_HLT_j55_boffperf_split", "S_HLT_j60_gsc110_boffperf_split", "E_HLT_j225_gsc320_boffperf_split"]
#monitoring_bjet = ["E_HLT_j55_boffperf_split","S_HLT_j60_gsc110_boffperf_split","S_HLT_j35_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split","E_HLT_j55_boffperf"]
monitoring_bjet = ["E_HLT_j35_boffperf_split","E_HLT_j55_boffperf_split","S_HLT_j85_gsc110_boffperf_split","S_HLT_j45_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split"]
#if TriggerFlags.doFTK():
monitoring_bjet += monitoring_bjet_FTK
#monitoring_mujet = ["S_HLT_mu4_j55_bperf_split_dr05_dz02", "E_HLT_mu4_j55_bperf_split_dr05_dz02_L1BTAG-MU4J15", "E_HLT_mu6_j110_bperf_split_dr05_dz02"]
#monitoring_mujet = ["S_HLT_mu4_j35_gsc55_boffperf_split_dr05_dz02", "E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20", "E_HLT_mu6_j110_boffperf_split_dr05_dz02"]
monitoring_mujet = ["S_HLT_mu4_j45_gsc55_boffperf_split_dr05_dz02","E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20","E_HLT_mu6_j110_gsc150_boffperf_split_dr05_dz02",
"E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02"]
# triggers in pp collisions - used for q431 test
#monitoring_bjet_pp = ["E_HLT_j35_boffperf_split", "E_HLT_j55_boffperf", "S_HLT_j55_boffperf_split", "E_HLT_j320_boffperf", "S_HLT_j320_boffperf_split",
# "S_HLT_j225_gsc360_boffperf_split"]
#monitoring_bjet_pp = ["S_HLT_j35_gsc55_boffperf_split", "E_HLT_j55_boffperf", "E_HLT_j55_boffperf_split", "S_HLT_j60_gsc110_boffperf_split", "E_HLT_j225_gsc320_boffperf_split"]
#monitoring_bjet_pp = ["E_HLT_j55_boffperf_split","S_HLT_j60_gsc110_boffperf_split","S_HLT_j35_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split","E_HLT_j55_boffperf"]
monitoring_bjet_pp = ["E_HLT_j35_boffperf_split","E_HLT_j55_boffperf_split","S_HLT_j85_gsc110_boffperf_split","S_HLT_j45_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split"]
#if TriggerFlags.doFTK():
monitoring_bjet_pp += monitoring_bjet_FTK
#monitoring_mujet_pp = ["S_HLT_mu4_j55_bperf_split_dr05_dz02", "E_HLT_mu4_j55_bperf_split_dr05_dz02_L1BTAG-MU4J15", "E_HLT_mu6_j110_bperf_split_dr05_dz02"]
#monitoring_mujet_pp = ["S_HLT_mu4_j35_gsc55_boffperf_split_dr05_dz02", "E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20", "E_HLT_mu6_j110_boffperf_split_dr05_dz02"]
monitoring_mujet_pp = ["S_HLT_mu4_j45_gsc55_boffperf_split_dr05_dz02","E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20","E_HLT_mu6_j110_gsc150_boffperf_split_dr05_dz02",
"E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02"]
......@@ -48,7 +35,6 @@ monitoring_mujet_pp = ["S_HLT_mu4_j45_gsc55_boffperf_split_dr05_dz02","E_HLT_mu
# cosmics triggers
#monitoring_bjet_cosmic = ["S_HLT_j0_perf_bperf_L1RD0_EMPTY", "S_HLT_j0_perf_bperf_L1J12_EMPTY", "S_HLT_j0_perf_bperf_L1MU10"]
monitoring_bjet_cosmic = ["S_HLT_j0_perf_boffperf_L1RD0_EMPTY", "S_HLT_j0_perf_boffperf_L1J12_EMPTY", "S_HLT_j0_perf_boffperf_L1MU10"]
......@@ -64,17 +50,14 @@ monitoring_mujet_hi = ["E_HLT_mu4_j20_ion_dr05", "S_HLT_mu4_j60_ion_dr05", "S
# Triggers for MC - used for q221 test
#monitoring_bjet_validation = ["E_HLT_j35_boffperf_split", "E_HLT_j55_boffperf", "S_HLT_j55_boffperf_split", "E_HLT_j320_boffperf", "S_HLT_j320_boffperf_split",
# "S_HLT_j225_gsc360_boffperf_split"]
#monitoring_bjet_validation = ["S_HLT_j35_gsc55_boffperf_split", "E_HLT_j55_boffperf", "E_HLT_j55_boffperf_split", "S_HLT_j60_gsc110_boffperf_split", "E_HLT_j225_gsc320_boffperf_split"]
#monitoring_bjet_validation = ["E_HLT_j55_boffperf_split","S_HLT_j60_gsc110_boffperf_split","S_HLT_j35_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split","E_HLT_j55_boffperf"]
monitoring_bjet_validation = ["E_HLT_j35_boffperf_split","E_HLT_j55_boffperf_split","S_HLT_j85_gsc110_boffperf_split","S_HLT_j45_gsc55_boffperf_split","E_HLT_j225_gsc300_boffperf_split"]
#if TriggerFlags.doFTK():
monitoring_bjet_validation += monitoring_bjet_FTK
#monitoring_mujet_validation = ["S_HLT_mu4_j55_bperf_split_dr05_dz02", "E_HLT_mu4_j55_bperf_split_dr05_dz02_L1BTAG-MU4J15", "E_HLT_mu6_j110_bperf_split_dr05_dz02"]
#monitoring_mujet_validation = ["S_HLT_mu4_j35_gsc55_boffperf_split_dr05_dz02", "E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20", "E_HLT_mu6_j110_boffperf_split_dr05_dz02"]
monitoring_mujet_validation = ["S_HLT_mu4_j45_gsc55_boffperf_split_dr05_dz02","E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02_L1BTAG-MU6J20","E_HLT_mu6_j110_gsc150_boffperf_split_dr05_dz02",
"E_HLT_mu6_j60_gsc85_boffperf_split_dr05_dz02"]
print "In TrigBjetMonitCategory: monitoring_bjet"
print monitoring_bjet
......@@ -51,9 +51,24 @@ def TrigBjetMonConfig(inputFlags):
# trigBjetMonAlg.RandomHist = True
# to enable a trigger filter, for example:
#trigBjetMonAlg.TriggerChain = 'HLT_mu26_ivarmedium'
trigBjetMonAlg.TriggerChain = 'HLT_e24_lhtight_nod0'
#trigBjetMonAlg.TriggerChain = 'HLT_e24_lhtight_nod0'
trigBjetMonAlg.TriggerChain = ''
### STEP 4 ###
# Read in the Bjet trigger chain names
from TrigBjetMonitoring import TrigBjetMonitCategory
bjet_triglist = TrigBjetMonitCategory.monitoring_bjet
print bjet_triglist
expert = []
shifter = []
for chain in bjet_triglist :
if chain[0:1] == "E" :
expert.append(chain[2:])
if chain[0:1] == "S" :
shifter.append(chain[2:])
print expert
print shifter
# Add some tools. N.B. Do not use your own trigger decion tool. Use the
# standard one that is included with AthMonitorAlgorithm.
......@@ -84,17 +99,32 @@ def TrigBjetMonConfig(inputFlags):
### STEP 5 ###
# Configure histograms
#NB! The histograms defined here must match the ones in the cxx file exactly
myGroup.defineHistogram('lumiPerBCID',title='Luminosity;L/BCID;Events',
path='ToRuleThemAll',xbins=10,xmin=0.0,xmax=10.0)
myGroup.defineHistogram('lb', title='Luminosity Block;lb;Events',
path='ToFindThem',xbins=1000,xmin=-0.5,xmax=999.5)
print " ==> expert[0]: ", expert[0]
myGroup.defineHistogram('E1d0;E1d0', title='Distribution of d0;d0;Events',
path=expert[0],xbins=10,xmin=-1.0,xmax=1.0)
myGroup.defineHistogram('E2d0;E2d0', title='Distribution of d0;d0;Events',
path=expert[1],xbins=10,xmin=-1.0,xmax=1.0)
#myGroup.defineHistogram('lumiPerBCID',title='Luminosity;L/BCID;Events',
# path='ToRuleThemAll',xbins=10,xmin=0.0,xmax=10.0)
#myGroup.defineHistogram('lb', title='Luminosity Block;lb;Events',
# path='ToFindThem',xbins=1000,xmin=-0.5,xmax=999.5)
#myGroup.defineHistogram('random', title='LB;x;Events',
# path='ToBringThemAll',xbins=30,xmin=0,xmax=1,opt='kLBNHistoryDepth=10')
#myGroup.defineHistogram('pT_passed,pT',type='TEfficiency',title='Test TEfficiency;x;Eff',
# path='AndInTheDarkness',xbins=100,xmin=0.0,xmax=50.0)
shifterGroup.defineHistogram('run',title='Run Number;run;Events',
path='SomePath',xbins=1000000,xmin=-0.5,xmax=999999.5)
print " ==> shifter[0]: ", shifter[0]
shifterGroup.defineHistogram('S1d0;S1d0', title='Distribution of d0;d0;Events',
path=shifter[0],xbins=10,xmin=-1.0,xmax=1.0)
shifterGroup.defineHistogram('S2d0;S2d0', title='Distribution of d0;d0;Events',
path=shifter[1],xbins=10,xmin=-1.0,xmax=1.0)
shifterGroup.defineHistogram('S2IP3D_pu;S2IP3D_pu', title='IP3D_pu probability distribution;IP3D_pu;Events',
path=shifter[1],xbins=50,xmin=0.0,xmax=1.0)
#shifterGroup.defineHistogram('run',title='Run Number;run;Events',
# path='SomePath',xbins=1000000,xmin=-0.5,xmax=999999.5)
### STEP 6 ###
# Finalize. The return value should be a tuple of the ComponentAccumulator
......@@ -116,7 +146,8 @@ if __name__=='__main__':
# Setup logs
from AthenaCommon.Logging import log
from AthenaCommon.Constants import DEBUG,INFO
log.setLevel(DEBUG)
# log.setLevel(DEBUG)
log.setLevel(INFO)
# Set the Athena configuration flags
from AthenaConfiguration.AllConfigFlags import ConfigFlags
......@@ -141,5 +172,7 @@ if __name__=='__main__':
#trigBjetMonitorAcc.getEventAlgo('TrigBjetMonAlg').OutputLevel = 2 # DEBUG
cfg.printConfig(withDetails=True) # set True for exhaustive info
cfg.run() #use cfg.run(20) to only run on first 20 events
# cfg.run() #use cfg.run(20) to only run on first 20 events
Nevents = 10
cfg.run(Nevents)
......@@ -6,6 +6,7 @@
TrigBjetMonitorAlgorithm::TrigBjetMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
: AthMonitorAlgorithm(name,pSvcLocator)
,m_doRandom(true)
{}
......@@ -13,15 +14,16 @@ TrigBjetMonitorAlgorithm::~TrigBjetMonitorAlgorithm() {}
StatusCode TrigBjetMonitorAlgorithm::initialize() {
return AthMonitorAlgorithm::initialize();
return AthMonitorAlgorithm::initialize();
}
StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
using namespace Monitored;
using namespace Monitored;
// Declare the quantities which should be monitored
//NB! The variables and histograms defined here must match the ones in the py file exactly!
// Declare the quantities which should be monitored
//NB! The variables and histograms defined here must match the ones in the py file exactly!
/* Elin's example
auto lumiPerBCID = Monitored::Scalar<float>("lumiPerBCID",0.0);
auto lb = Monitored::Scalar<int>("lb",0);
auto run = Monitored::Scalar<int>("run",0);
......@@ -42,6 +44,58 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c
// Alternative fill method. Get the group yourself, and pass it to the fill function.
auto tool = getGroup("TrigBjetMonitor");
fill(tool,run);
*/
auto E1d0 = Monitored::Scalar<float>("E1d0",0.0);
auto E2d0 = Monitored::Scalar<float>("E2d0",0.0);
auto S1d0 = Monitored::Scalar<float>("S1d0",0.0);
auto S2d0 = Monitored::Scalar<float>("S2d0",0.0);
auto S2IP3D_pu = Monitored::Scalar<float>("S2IP3D_pu",0.0);
auto random = Monitored::Scalar<float>("random",0.0);
// Set the values of the monitored variables for the event
/*
E1d0 = -0.02;
E2d0 = +0.02;
S1d0 = -0.01;
S2d0 = +0.01;
*/
S2IP3D_pu = 0.5;
// TRandom r;
TRandom r(ctx.eventID().event_number());
TRandom q(ctx.eventID().event_number());
std::cout << " E1d0 before: " << E1d0 << std::endl;
std::cout << " S2d0 before: " << S2d0 << std::endl;
std::cout << " random before: " << random << std::endl;
std::cout << " m_doRandom " << m_doRandom << std::endl;
if (m_doRandom) {
E1d0 = r.Gaus(0.,0.1);
E2d0 = r.Gaus(0.,0.2);
S1d0 = r.Gaus(0.,0.3);
S2d0 = r.Gaus(0.,0.4);
random = q.Rndm();
std::cout << " E1d0 in: " << E1d0 << std::endl;
std::cout << " S2d0 in: " << S2d0 << std::endl;
std::cout << " random in: " << random << std::endl;
}
std::cout << " E1d0 after: " << E1d0 << std::endl;
std::cout << " S2d0 after: " << S2d0 << std::endl;
std::cout << " S2IP3D_pu after: " << S2IP3D_pu << std::endl;
std::cout << " random after: " << random << std::endl;
// Fill. First argument is the tool name, all others are the variables to be saved.
fill("TrigBjetMonitor",E1d0,S1d0);
// Alternative fill method. Get the group yourself, and pass it to the fill function.
auto tool = getGroup("TrigBjetMonitor");
fill(tool,E2d0);
fill(tool,S2d0);
fill(tool,S2IP3D_pu);
return StatusCode::SUCCESS;
}
......@@ -8,6 +8,7 @@
#include "AthenaMonitoring/AthMonitorAlgorithm.h"
#include "AthenaMonitoring/Monitored.h"
#include "TRandom3.h"
class TrigBjetMonitorAlgorithm : public AthMonitorAlgorithm {
public:
......@@ -15,5 +16,8 @@ class TrigBjetMonitorAlgorithm : public AthMonitorAlgorithm {
virtual ~TrigBjetMonitorAlgorithm();
virtual StatusCode initialize() override;
virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
private:
// Gaudi::Property<bool> m_doRandom {this,"RandomHist",false};
Gaudi::Property<bool> m_doRandom {this,"RandomHist",true};
};
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment