1 #ifndef _DEventWriterROOT_
2 #define _DEventWriterROOT_
7 #include "TClonesArray.h"
8 #include "TLorentzVector.h"
14 #include "JANA/JApplication.h"
15 #include "JANA/JObject.h"
16 #include "JANA/JEventLoop.h"
51 void Initialize(JEventLoop* locEventLoop);
53 void Create_ThrownTree(JEventLoop* locEventLoop,
string locOutputFileName)
const;
55 void Fill_DataTrees(JEventLoop* locEventLoop,
string locDReactionTag)
const;
56 void Fill_DataTree(JEventLoop* locEventLoop,
const DReaction* locReaction, deque<const DParticleCombo*>& locParticleCombos)
const;
57 void Fill_ThrownTree(JEventLoop* locEventLoop)
const;
68 const vector<const DBeamPhoton*>& locBeamPhotons,
const vector<const DChargedTrackHypothesis*>& locChargedHypos,
69 const vector<const DNeutralParticleHypothesis*>& locNeutralHypos,
const deque<const DParticleCombo*>& locParticleCombos)
const{};
72 string Convert_ToBranchName(
string locInputName)
const;
73 string Build_BranchName(
string locParticleBranchName,
string locVariableName)
const;
74 ULong64_t Calc_ParticleMultiplexID(
Particle_t locPID)
const;
75 void Get_DecayProductNames(
const DReaction* locReaction,
size_t locReactionStepIndex, TMap* locPositionToNameMap, TList*& locDecayProductNames, deque<size_t>& locSavedSteps)
const;
110 void Create_DataTree(
const DReaction* locReaction, JEventLoop* locEventLoop,
bool locIsMCDataFlag);
113 void Create_Branches_Thrown(
DTreeBranchRegister& locTreeBranchRegister,
bool locIsOnlyThrownFlag)
const;
116 void Create_Branches_ThrownParticles(
DTreeBranchRegister& locTreeBranchRegister,
bool locIsOnlyThrownFlag)
const;
117 void Create_Branches_Beam(
DTreeBranchRegister& locTreeBranchRegister,
bool locIsMCDataFlag)
const;
118 void Create_Branches_NeutralHypotheses(
DTreeBranchRegister& locTreeBranchRegister,
bool locIsMCDataFlag)
const;
119 void Create_Branches_ChargedHypotheses(
DTreeBranchRegister& locTreeBranchRegister,
bool locIsMCDataFlag)
const;
123 void Create_Branches_Combo(
DTreeBranchRegister& locTreeBranchRegister,
const DReaction* locReaction,
bool locIsMCDataFlag, TMap* locPositionToNameMap)
const;
129 void Compute_ThrownPIDInfo(
const vector<const DMCThrown*>& locMCThrowns_FinalState,
const vector<const DMCThrown*>& locMCThrowns_Decaying,
130 ULong64_t& locNumPIDThrown_FinalState, ULong64_t& locPIDThrown_Decaying)
const;
131 void Group_ThrownParticles(
const vector<const DMCThrown*>& locMCThrowns_FinalState,
const vector<const DMCThrown*>& locMCThrowns_Decaying,
132 vector<const DMCThrown*>& locMCThrownsToSave, map<const DMCThrown*, unsigned int>& locThrownIndexMap)
const;
133 void Fill_ThrownInfo(
DTreeFillData* locTreeFillData,
const DMCReaction* locMCReaction,
const DBeamPhoton* locTaggedMCGenBeam,
const vector<const DMCThrown*>& locMCThrowns,
134 const map<const DMCThrown*, unsigned int>& locThrownIndexMap, ULong64_t locNumPIDThrown_FinalState, ULong64_t locPIDThrown_Decaying,
136 void Fill_ThrownParticleData(
DTreeFillData* locTreeFillData,
unsigned int locArrayIndex,
const DMCThrown* locMCThrown,
137 const map<const DMCThrown*, unsigned int>& locThrownIndexMap,
const DMCThrownMatching* locMCThrownMatching)
const;
140 vector<const DBeamPhoton*> Get_BeamPhotons(
const deque<const DParticleCombo*>& locParticleCombos)
const;
141 vector<const DChargedTrackHypothesis*> Get_ChargedHypotheses(JEventLoop* locEventLoop)
const;
142 vector<const DChargedTrackHypothesis*> Get_ChargedHypotheses_Used(JEventLoop* locEventLoop,
const DReaction* locReaction,
const deque<const DParticleCombo*>& locParticleCombos)
const;
143 vector<const DNeutralParticleHypothesis*> Get_NeutralHypotheses(JEventLoop* locEventLoop,
const set<Particle_t>& locReactionPIDs)
const;
144 vector<const DNeutralParticleHypothesis*> Get_NeutralHypotheses_Used(JEventLoop* locEventLoop,
const DReaction* locReaction,
const set<Particle_t>& locReactionPIDs,
const deque<const DParticleCombo*>& locParticleCombos)
const;
149 const map<const DMCThrown*, unsigned int>& locThrownIndexMap,
const DDetectorMatches* locDetectorMatches)
const;
151 const map<const DMCThrown*, unsigned int>& locThrownIndexMap,
const DDetectorMatches* locDetectorMatches)
const;
154 void Fill_ComboData(
DTreeFillData* locTreeFillData,
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
unsigned int locComboIndex,
const map<pair<oid_t, Particle_t>,
size_t>& locObjectToArrayIndexMap)
const;
155 void Fill_ComboStepData(
DTreeFillData* locTreeFillData,
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
unsigned int locStepIndex,
unsigned int locComboIndex,
156 DKinFitType locKinFitType,
const map<pair<oid_t, Particle_t>,
size_t>& locObjectToArrayIndexMap)
const;
159 void Fill_ComboBeamData(
DTreeFillData* locTreeFillData,
unsigned int locComboIndex,
const DBeamPhoton* locBeamPhoton,
size_t locBeamIndex,
DKinFitType locKinFitType)
const;
168 TString locTString(locInputName);
169 locTString.ReplaceAll(
"*",
"Star");
170 locTString.ReplaceAll(
"(",
"_");
171 locTString.ReplaceAll(
")",
"_");
172 locTString.ReplaceAll(
"+",
"Plus");
173 locTString.ReplaceAll(
"-",
"Minus");
174 locTString.ReplaceAll(
"'",
"Prime");
175 return (
string)((
const char*)locTString);
180 return ((locParticleBranchName !=
"") ? locParticleBranchName +
string(
"__") + locVariableName : locVariableName);
183 #endif //_DEventWriterROOT_
unsigned int dInitNumNeutralArraySize
map< const DReaction *, const DReactionVertexInfo * > dVertexInfoMap
virtual void Create_CustomBranches_DataTree(DTreeBranchRegister &locBranchRegister, JEventLoop *locEventLoop, const DReaction *locReaction, bool locIsMCDataFlag) const
map< const DReaction *, DTreeFillData * > dTreeFillDataMap
map< const DReaction *, DTreeInterface * > dTreeInterfaceMap
unsigned int dInitNumThrownArraySize
map< const DReaction *, DCutAction_ThrownTopology * > dCutActionMap_ThrownTopology
virtual void Fill_CustomBranches_ThrownTree(DTreeFillData *locTreeFillData, JEventLoop *locEventLoop, const DMCReaction *locMCReaction, const vector< const DMCThrown * > &locMCThrowns) const
unsigned int dInitNumComboArraySize
virtual void Fill_CustomBranches_DataTree(DTreeFillData *locTreeFillData, JEventLoop *locEventLoop, const DReaction *locReaction, const DMCReaction *locMCReaction, const vector< const DMCThrown * > &locMCThrowns, const DMCThrownMatching *locMCThrownMatching, const DDetectorMatches *locDetectorMatches, const vector< const DBeamPhoton * > &locBeamPhotons, const vector< const DChargedTrackHypothesis * > &locChargedHypos, const vector< const DNeutralParticleHypothesis * > &locNeutralHypos, const deque< const DParticleCombo * > &locParticleCombos) const
string Convert_ToBranchName(string locInputName) const
DTreeFillData dThrownTreeFillData
const DAnalysisUtilities * dAnalysisUtilities
map< const DReaction *, DCutAction_TrueCombo * > dCutActionMap_TrueCombo
unsigned int dInitNumTrackArraySize
unsigned int dInitNumBeamArraySize
map< const DReaction *, DCutAction_BDTSignalCombo * > dCutActionMap_BDTSignalCombo
string Build_BranchName(string locParticleBranchName, string locVariableName) const
virtual void Create_CustomBranches_ThrownTree(DTreeBranchRegister &locBranchRegister, JEventLoop *locEventLoop) const