From ae8976934c4e45511bbb954b854e05b7ee4f8125 Mon Sep 17 00:00:00 2001 From: FaserMC <fasermc@cern.ch> Date: Sun, 22 Jan 2023 21:25:58 +0100 Subject: [PATCH] Fixes for ntuple making --- .../NtupleDumper/scripts/faser_ntuple_maker.py | 15 +++++++++++++-- .../NtupleDumper/src/NtupleDumperAlg.cxx | 12 +++++++++++- .../NtupleDumper/src/NtupleDumperAlg.h | 2 ++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py index 189b9500..a22d1edb 100755 --- a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py +++ b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py @@ -60,7 +60,7 @@ filelist = [] # If this is a directory, need to create file list if filepath.is_dir(): - # Use expected data pattern to find files + # Use expected data pattern to find files (data only) runstr = filepath.stem # Make list of segments to search for @@ -114,10 +114,12 @@ if filepath.is_dir(): filelist.append(filestr) # End of loop over segments + # Parse name to create outfile firstfile = Path(filelist[0]) firststem = str(firstfile.stem) firstfaser = firststem.split('-')[0] firstshort = firststem.split('-')[1] + runstr = firststem.split('-')[2] firstseg = firststem.split('-')[3] if args.merge > 1: firstseg2 = firststem.split('-')[4] @@ -128,13 +130,21 @@ if filepath.is_dir(): if args.merge > 1: lastseg = laststem.split('-')[4] + print(f"Faser = {firstfaser}") + print(f"Short = {firstshort}") + print(f"Run = {runstr}") + print(f"First = {firstseg}") + print(f"Last = {lastseg}") + print(f"Args = {args.tag}") + # Find any tags tagstr = firststem.replace(f"{firstfaser}-{firstshort}-{runstr}-{firstseg}", "") if args.merge > 1: tagstr = tagstr.replace(f"-{firstseg2}", "") tagstr = tagstr.replace("-xAOD", "") - print(f"Tag = {tagstr}") + + print(f"Tag = {tagstr}") # Build output name outfile = f"{firstfaser}-{firstshort}-{runstr}-{firstseg}-{lastseg}" @@ -148,6 +158,7 @@ if filepath.is_dir(): outfile += "-PHYS.root" + # If this is a single file, just process that # Could be a url, so don't check if this is a file else: diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index b61be213..e1053fa6 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -610,6 +610,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const } // load in calibrated calo container + if (m_doCalib) { SG::ReadHandle<xAOD::CalorimeterHitContainer> ecalCalibratedContainer { m_ecalCalibratedContainer, ctx }; ATH_CHECK(ecalCalibratedContainer.isValid()); for (auto hit : *ecalCalibratedContainer) { @@ -649,6 +650,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const ATH_MSG_DEBUG("Calibrated preshower: ch is " << ch << ", edep is " << hit->E_dep() << ", E_EM is " << hit->E_EM() << ", Nmip is " << hit->Nmip() << ", fit_to_raw_ratio is " << hit->fit_to_raw_ratio()); } + } // process all waveeform data fro all scintillator and calorimeter channels SG::ReadHandle<xAOD::WaveformHitContainer> vetoNuContainer { m_vetoNuContainer, ctx }; @@ -766,8 +768,16 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const // loop over all reconstructed tracks and use only the tracks that have hits in all three tracking stations (excludes IFT) // store track parameters at most upstream measurement and at most downstream measurement // extrapolate track to all scintillator positions and store extrapolated position and angle - SG::ReadHandle<TrackCollection> trackCollection {m_trackCollectionWithoutIFT, ctx}; // use track collection that excludes IFT + SG::ReadHandle<TrackCollection> trackCollection; + if (m_useIFT) { + SG::ReadHandle<TrackCollection> tc {m_trackCollection, ctx}; // use track collection that excludes IFT + trackCollection = tc; + } else { + SG::ReadHandle<TrackCollection> tc {m_trackCollectionWithoutIFT, ctx}; // use track collection that excludes IFT + trackCollection = tc; + } ATH_CHECK(trackCollection.isValid()); + for (const Trk::Track* track : *trackCollection) { if (track == nullptr) continue; diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 5cc34202..c970480b 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -98,6 +98,8 @@ private: const PreshowerID* m_preshowerHelper; const EcalID* m_ecalHelper; + BooleanProperty m_useIFT { this, "UseIFT", false, "Use IFT tracks" }; + BooleanProperty m_doCalib { this, "DoCalib", true, "Fill calibrated calorimeter quantities" }; BooleanProperty m_doBlinding { this, "DoBlinding", true, "Blinding will not output events with Calo signal > 10 GeV e-" }; 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" }; -- GitLab