Ported from ubana in suite uboonecode v08_00_00_43 e17:prof in Mar. 2022
The original code can be found at Fermilab Readmine
The SinglePhotonAnalysis Module is originally developed in MicroBooNE that aids NCDeltaRadiative singlephoton search.
Use a reco2 stage artROOT file as input:
lar -c run_singlephoton_sbnd.fcl -s <input_reco2_sbnd_artROOT>
The module does not work out of the box, so there are some modifications to make it fit into the SBND.
- June 2022
- New electric gains for SBND MC at
singlephoton_sbnd.fcl, see SBN-doc-19505-v1; - Update the neutrino slice definition in the
Single Photonmodule. - Update add new geometry variable repsected to Cathode Plane Assemble in SBND:
reco_*_dist_to_CPA - Disable Kalman dEdx variables
- Disable Second Shower Search 3D (
sss3d) variables - Update FHiCLs for filtering events in SBND:
NCRadiativeResonantandNCDeltaRadiative
- New electric gains for SBND MC at
These updates are to accommodate the change of Pandora features listed below:
| Items | Pandora @ MicroBooNE | Pandora @ SBND |
|---|---|---|
| Neutrino Slice | One nu slice in each event | Multiple nu slices in each event |
| Kalman Fitter | In-use | Not in-use |
| 3dShower Objects | Available | Unavailable |
| MVA Method (for track/neutrino scores) | Support Vector Machines | Boosted Decision Trees |
Three sub-modules are included in the Single Photon Analysis Module:
SinglePhoton_module.ccimpements theSinglePhotonmodule to read reco2 files and produce n-tuples with varaibles targeting photon reconstructions.NCRadiativeResonant_module.ccimplements theNCRadiativeResonantfilter to select events with photons coming out from the nucleus.NCDeltaRadiative_module.ccimplements theNCDeltaRadiativefilter for NCDeltaRadiative events
-
Libraries/contains essential headers for theSinglePhotonmodule; most of the variables are assigned in these functions. -
SEAview/is an additional module runs inside theSinglePhotonmodule. -
jobs/contains FHiCL files for running these modules -
HelperFunctions/contains functions that are independent to output variables & they function as helpers to process simple operations.
The main flow
graph LR
A[art::EDFilter]-->B[beginJob];
B-->C[beginSubRun];
C-->F[filter: Loop over events];
F-->F;
F-->D[endSubRun];
D-->E[endJob];
In each event loop:
flowchart TB
subgraph AA[1. Analyze Pandora Reco. Objects]
direction TB
C[AnalyzeFlashes]-->D;
D[AnalyzeTracks]-->E[AnalyzeShowers];
end
subgraph BB[2. Reco. MC Matching, non-data treatment]
direction TB
F[Geant4 Info.]---H;
H[Match Reco. Showers and MCParticles]---I;
I[Match Reco. Tracks and MCParticles];
J[MCTruth Info.]---K;
K[Flux Info. AnalyzeEventWeight]---L;
L[Match RecoSlices and MCParticles];
end
subgraph DD[3. 2nd Shower search]
direction TB
N[Track stub study]
O[Shower cluster study]
M[Isolation Study for Second Shower Veto]-->N;
M-->O;
end
subgraph THIS[The Flow]
direction TB
A[Prepare branches]-->AA;
AA-->BB;
BB-->DD;
DD-->End[Output singlephoton ntuple];
end
Objects are obtained from Pandora reconstruction, and they are connected with the following relation:
graph TD
PF[recob::PFParticle];
M[larpandoraobj::Metadata];
T[recob::Track];
Sh[recob::Shower];
H[recob::Hit's];
C[recob::Cluster's];
S[recob::Slice];
MCT[simb::MCTruth];
MCP[simb::MCParticle];
PID[anab::ParticleID];
Cal[anab::Calorimetry];
SP[recob::SpacePoint];
ID[others];
PF-->M;
PF-->SP;
PF-->ID;
PF-->C;
C-->H;
PF-->Sh;
PF-->T;
T-->PID;
T-->Cal;
PF-->S;
S-->H;
Sh-->MCP;
T-->MCP;
MCP-->MCT;
Sh-->H;
T-->H;
These objects are accessible via labels:
Labels configured in singlephoton_sbnd.fcl
| Alias | Objects | Label |
|---|---|---|
| PandoraLabel | std::vector<recob::PFParticle>std::vector<recob::Cluster>std::vector<recob::Slice>std::vector<recob::Vertex> |
pandora |
| TrackLabel | std::vector<recob::Track> |
pandoraTrack |
| ShowerLabel | std::vector<recob::Shower> |
pandoraShower |
| ParticleIDLabel | anab::ParticleID(art::FindOneP) |
pandoraSCEPid |
| CaloLabel | anab::Calorimetry(art::FindManyP) |
pandoraSCECalo |
| FlashLabel | std::vector<recob::OpFlash> |
opflashtpc0 |
| POTLabel | sumdata::POTSummary |
generator |
Below alias auto-configured inside the code as a default
| Alias | Objects | Label |
|---|---|---|
| HitFinderModule | std::vector<recob::Hit> |
gaushit |
| BadChannelLabel | std::vector<int> |
badmasks(REMOVED) |
| ShowerTrackFitter | art::Assns<recob::PFParticle,recob::Track,void> |
pandoraTrack |
| ShowerTrackFitterCalo | anab::Calorimetry(art::FindManyP) |
pandoraCalo |
| GeneratorLabel | std::vector<simb::GTruth>std::vector<simb::MCTruth> |
generator |
| GeantModule | simb::MCParticle>(art::FindManyP) |
largeant |
| HitMCParticleAssnLabel | simb::MCParticle,anab::BackTrackerHitMatchingData( art::FindManyP) |
gaushitTruthMatch |
| Shower3DLabel | recob::Shower(art::FindOneP) |
pandoraShower |
Summarization in progress.
In TTree vertex_tree, variables prefix have the following meaning:
- Reconstructed variables valid for all types of events
reco_*are reconstructed variables provided by Pandorasss_*are second shower search varaibles targeting hits/clusters that are not considered as tracks or showers by Pandoratrackstub_*are track stub varaibles targeting track-like hits/clusters that are not considered as tracks or showers by Pandora
- MC variables from simulations
mctruth_*are MCTruth variables provided by the event genrator GEANT4sim_*are MCTruth variables matched to Pandora reconstructed objects