diff --git a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py index 8e09fb58a2117d7c5654a636e4cb748d6bc02ad3..8ea26ebb33fef5490110206cab8c940eecfa716b 100755 --- a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py +++ b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py @@ -45,16 +45,16 @@ parser.add_argument("--partial", action='store_true', help="Allow partial input files") parser.add_argument("--trigFilt", action='store_true', - help="apply trigger event filter ") + help="apply trigger event filter") parser.add_argument("--scintFilt", action='store_true', - help="apply scintillator event filter ") -parser.add_argument("--trackFilt", action='store_true', - help="apply track event filter ") + help="apply scintillator event filter") +parser.add_argument("--NoTrackFilt", action='store_true', + help="Don't apply track event filter (default: do)") parser.add_argument("--unblind", action='store_true', help="Don't apply signal blinding (default: do)") parser.add_argument("--onlyblind", action='store_true', - help="Only store events that were blinded (default: don't)") + help="Only store events that were blinded (will override unblind arg)") parser.add_argument("--fluka", action='store_true', help="Add FLUKA weights to ntuple") @@ -121,8 +121,8 @@ if filepath.is_dir(): filestr = str(flist[0].resolve()) # Use proper EOS file path here? -# if filestr[:4] == '/eos': -# filestr = f"root://eospublic.cern.ch/{filestr}" + if filestr[:4] == '/eos': + filestr = f"root://eospublic.cern.ch/{filestr}" filelist.append(filestr) # End of loop over segments @@ -147,7 +147,10 @@ if filepath.is_dir(): print(f"Run = {runstr}") print(f"First = {firstseg}") print(f"Last = {lastseg}") - print(f"Args = {args.tag}") + print(f"Tag = {args.tag}") + print(f"Trigger Filter = {args.trigFilt}") + print(f"Scintillator Filter = {args.scintFilt}") + print(f"Track Filter = {not args.NoTrackFilt}") print(f"Blind = {not args.unblind}") print(f"OnlyBlinded = {args.onlyblind}") @@ -253,7 +256,7 @@ if args.isMC: acc.merge(NtupleDumperAlgCfg(ConfigFlags, outfile)) else: - acc.merge(NtupleDumperAlgCfg(ConfigFlags, outfile, DoBlinding=(not args.unblind), OnlyBlinded=args.onlyblind, DoScintFilter = args.scintFilt, DoTrackFilter = args.trackFilt, DoTrigFilter = args.trigFilt)) + acc.merge(NtupleDumperAlgCfg(ConfigFlags, outfile, DoBlinding=(not args.unblind), OnlyBlinded=args.onlyblind, DoScintFilter = args.scintFilt, DoTrackFilter = (not args.NoTrackFilt), DoTrigFilter = args.trigFilt)) if not args.verbose: from AthenaConfiguration.ComponentFactory import CompFactory diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 30d1ca6eb93762daca4735e97173fe631879d5dc..8a7fabc48085845f921966229c85504e50e70ffa 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -409,11 +409,6 @@ StatusCode NtupleDumperAlg::initialize() ATH_MSG_INFO("Blinding will NOT be enforced for real data."); } - if (m_doScintOrTrackFilter){ - m_doScintFilter = true; - m_doTrackFilter = true; - } - return StatusCode::SUCCESS; } @@ -466,7 +461,6 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const FillWaveBranches(*preshowerContainer); FillWaveBranches(*ecalContainer); - bool passes_ScintFilter = false; // if real data, store charge in histograms from random events if (!isMC) { SG::ReadHandle<xAOD::FaserTriggerData> triggerData(m_FaserTriggerData, ctx); @@ -505,6 +499,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const bool veto_OR_trig = (vetoNu_trig || vetoSt1_trig || vetoSt2_trig); + bool passes_ScintFilter = false; if (calo_trig) { passes_ScintFilter = true; } else if (veto_OR_trig && timingScint_trig) { @@ -515,7 +510,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const passes_ScintFilter = true; } - if ((!passes_ScintFilter) && (!m_doScintOrTrackFilter)) { + if (!passes_ScintFilter) { ATH_MSG_DEBUG("event did not pass scint filter"); return StatusCode::SUCCESS; // only store events that pass filter } @@ -1088,15 +1083,13 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const } if (!isMC) { - if (m_doTrackFilter && (!m_doScintOrTrackFilter)) { // filter events: only save events that have at least one long track + if (m_doTrackFilter) { // filter events: colliding bunches have at least one long track, non-colliding bunches have at least one long track or one calo module with raw_peak > 3 mV if (m_longTracks == 0 && abs(m_distanceToCollidingBCID) <= 1) { return StatusCode::SUCCESS; - } else if (abs(m_distanceToCollidingBCID) > 1 && m_wave_raw_peak[0] < 3.0 && m_wave_raw_peak[1] < 3.0 && m_wave_raw_peak[2] < 3.0 && m_wave_raw_peak[3] < 3.0 ) { - return StatusCode::SUCCESS; - } - } else if (m_doScintOrTrackFilter) { // filter events: only save events that pass scint cooincidence or have a long track - if (!((m_longTracks > 0) || passes_ScintFilter)) { - return StatusCode::SUCCESS; + } else if (abs(m_distanceToCollidingBCID) > 1) { + if (!(m_longTracks > 0 || m_wave_raw_peak[0] > 3.0 || m_wave_raw_peak[1] > 3.0 || m_wave_raw_peak[2] > 3.0 || m_wave_raw_peak[3] > 3.0 )) { + return StatusCode::SUCCESS; + } } } } diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 8248b93682037d171b64226f8251536a8c76fc9e..178fd07faa93162f977bbc4565466004730f14f4 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -112,8 +112,7 @@ private: BooleanProperty m_onlyBlinded { this, "OnlyBlinded", false, "Only events that would be blinded are saved" }; BooleanProperty m_doTrigFilter { this, "DoTrigFilter", false, "Only events that pass trigger cuts are passed" }; BooleanProperty m_doScintFilter { this, "DoScintFilter", false, "Only events that pass scintillator coincidence cuts are passed" }; - BooleanProperty m_doTrackFilter { this, "DoTrackFilter", false, "Only events that have >= 1 long track are passed" }; - BooleanProperty m_doScintOrTrackFilter { this, "DoScintOrTrackFilter", false, "Only events that pass scintillator coincidence cuts or have >= 1 long track are passed" }; + BooleanProperty m_doTrackFilter { this, "DoTrackFilter", true, "Only events that have >= 1 long track are passed, also non-colliding events with a track or calo signal are passed" }; BooleanProperty m_useFlukaWeights { this, "UseFlukaWeights", false, "Flag to weight events according to value stored in HepMC::GenEvent" }; BooleanProperty m_useGenieWeights { this, "UseGenieWeights", false, "Flag to weight events according to Genie luminosity" };