21 for(
size_t loc_i = 0; loc_i < locReactions.size(); ++loc_i)
23 if(!locReactions[loc_i]->Get_EnableTTreeOutputFlag())
37 vector<const DMCThrown*> locMCThrowns;
38 locEventLoop->Get(locMCThrowns);
40 vector<const DReactionVertexInfo*> locVertexInfos;
41 locEventLoop->Get(locVertexInfos);
50 for(
auto& locVertexInfo : locVertexInfos)
52 auto locVertexReactions = locVertexInfo->Get_Reactions();
53 for(
auto& locReaction : locVertexReactions)
56 if(locReaction->Get_EnableTTreeOutputFlag())
66 delete locMapPair.second;
71 delete locMapPair.second;
75 delete locMapPair.second;
77 delete locMapPair.second;
79 delete locMapPair.second;
95 locEventLoop->GetSingle(locMCReaction);
120 string locTreeName = locReactionName +
string(
"_Tree");
135 TMap* locPositionToNameMap =
Create_UserInfoMaps(locBranchRegister, locEventLoop, locReaction);
176 auto locReactionVertexInfo =
dVertexInfoMap.find(locReaction)->second;
183 TMap* locNameToPIDMap =
new TMap();
184 locNameToPIDMap->SetName(
"NameToPIDMap");
185 locUserInfo->Add(locNameToPIDMap);
187 TMap* locNameToPositionMap =
new TMap();
188 locNameToPositionMap->SetName(
"NameToPositionMap");
189 locUserInfo->Add(locNameToPositionMap);
191 TMap* locPositionToNameMap =
new TMap();
192 locPositionToNameMap->SetName(
"PositionToNameMap");
193 locUserInfo->Add(locPositionToNameMap);
195 TMap* locPositionToPIDMap =
new TMap();
196 locPositionToPIDMap->SetName(
"PositionToPIDMap");
197 locUserInfo->Add(locPositionToPIDMap);
199 TMap* locDecayProductMap =
new TMap();
200 locDecayProductMap->SetName(
"DecayProductMap");
201 locUserInfo->Add(locDecayProductMap);
203 TMap* locMiscInfoMap =
new TMap();
204 locMiscInfoMap->SetName(
"MiscInfoMap");
205 locUserInfo->Add(locMiscInfoMap);
207 TList* locParticleNameList =
new TList();
208 locParticleNameList->SetName(
"ParticleNameList");
209 locUserInfo->Add(locParticleNameList);
212 ostringstream locKinFitTypeStream;
213 locKinFitTypeStream << locKinFitType;
214 locMiscInfoMap->Add(
new TObjString(
"KinFitType"),
new TObjString(locKinFitTypeStream.str().c_str()));
216 string ANALYSIS_VERSION_STRING =
"";
217 if(gPARMS->Exists(
"ANALYSIS:DATAVERSIONSTRING"))
218 gPARMS->GetParameter(
"ANALYSIS:DATAVERSIONSTRING", ANALYSIS_VERSION_STRING);
219 if(ANALYSIS_VERSION_STRING !=
"")
220 locMiscInfoMap->Add(
new TObjString(
"ANALYSIS:DATAVERSIONSTRING"),
new TObjString(ANALYSIS_VERSION_STRING.c_str()));
222 string HDDM_DATA_VERSION_STRING =
"";
223 if(gPARMS->Exists(
"REST:DATAVERSIONSTRING"))
224 gPARMS->GetParameter(
"REST:DATAVERSIONSTRING", HDDM_DATA_VERSION_STRING);
225 if(HDDM_DATA_VERSION_STRING !=
"")
226 locMiscInfoMap->Add(
new TObjString(
"REST:DATAVERSIONSTRING"),
new TObjString(HDDM_DATA_VERSION_STRING.c_str()));
228 string REST_JANA_CALIB_CONTEXT =
"";
229 if(gPARMS->Exists(
"REST:JANACALIBCONTEXT"))
230 gPARMS->GetParameter(
"REST:JANACALIBCONTEXT", REST_JANA_CALIB_CONTEXT);
231 if(REST_JANA_CALIB_CONTEXT ==
"")
232 gPARMS->GetParameter(
"JANA_CALIB_CONTEXT", REST_JANA_CALIB_CONTEXT);
233 if(REST_JANA_CALIB_CONTEXT !=
"")
234 locMiscInfoMap->Add(
new TObjString(
"REST:JANACALIBCONTEXT"),
new TObjString(REST_JANA_CALIB_CONTEXT.c_str()));
237 if(gPARMS->Exists(
"ANALYSIS:BCAL_VERBOSE_ROOT_OUTPUT"))
239 if(gPARMS->Exists(
"ANALYSIS:FCAL_VERBOSE_ROOT_OUTPUT"))
241 if(gPARMS->Exists(
"ANALYSIS:DIRC_ROOT_OUTPUT"))
242 gPARMS->GetParameter(
"ANALYSIS:DIRC_ROOT_OUTPUT",
DIRC_OUTPUT);
247 size_t locNumConstraints = 0, locNumUnknowns = 0;
248 string locConstraintString = locKinFitUtils.
Get_ConstraintInfo(locReactionVertexInfo, locReaction, locNumConstraints, locNumUnknowns);
249 locMiscInfoMap->Add(
new TObjString(
"KinFitConstraints"),
new TObjString(locConstraintString.c_str()));
251 ostringstream locKinFitInfoStream;
252 locKinFitInfoStream << locNumConstraints;
253 locMiscInfoMap->Add(
new TObjString(
"NumKinFitConstraints"),
new TObjString(locKinFitInfoStream.str().c_str()));
255 locKinFitInfoStream.str(
"");
256 locKinFitInfoStream << locNumUnknowns;
257 locMiscInfoMap->Add(
new TObjString(
"NumKinFitUnknowns"),
new TObjString(locKinFitInfoStream.str().c_str()));
261 map<Particle_t, unsigned int> locParticleNumberMap;
262 map<Particle_t, unsigned int> locDecayingParticleNumberMap;
263 map<Particle_t, unsigned int> locTargetParticleNumberMap;
272 if(locTargetParticleNumberMap.find(locTargetPID) == locTargetParticleNumberMap.end())
273 locTargetParticleNumberMap[locTargetPID] = 1;
275 ++locTargetParticleNumberMap[locTargetPID];
278 for(
size_t loc_j = 0; loc_j < locFinalParticleIDs.size(); ++loc_j)
282 Particle_t locPID = locFinalParticleIDs[loc_j];
286 if(locDecayStepIndex >= 0)
288 if(locDecayingParticleNumberMap.find(locPID) == locDecayingParticleNumberMap.end())
289 locDecayingParticleNumberMap[locPID] = 1;
291 ++locDecayingParticleNumberMap[locPID];
295 if(locParticleNumberMap.find(locPID) == locParticleNumberMap.end())
296 locParticleNumberMap[locPID] = 1;
298 ++locParticleNumberMap[locPID];
304 map<Particle_t, unsigned int> locParticleNumberMap_Current, locDecayingParticleNumberMap_Current, locTargetParticleNumberMap_Current;
306 TObjString *locObjString_PID, *locObjString_Position, *locObjString_ParticleName;
307 map<int, string> locDecayingParticleNames;
314 ostringstream locPIDStream, locPositionStream, locParticleNameStream;
316 locPIDStream <<
PDGtype(locPID);
317 locObjString_PID =
new TObjString(locPIDStream.str().c_str());
319 locPositionStream << loc_i <<
"_" << -1;
320 locObjString_Position =
new TObjString(locPositionStream.str().c_str());
322 locPositionToPIDMap->Add(locObjString_Position, locObjString_PID);
325 locParticleNameStream <<
"ComboBeam";
326 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
327 locNameToPIDMap->Add(locObjString_ParticleName, locObjString_PID);
328 locParticleNameList->AddLast(locObjString_ParticleName);
335 locParticleNameStream << locDecayingParticleNames[loc_i];
336 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
339 locNameToPIDMap->Add(locObjString_ParticleName, locObjString_PID);
340 locParticleNameList->AddLast(locObjString_ParticleName);
343 locPositionToNameMap->Add(locObjString_Position, locObjString_ParticleName);
344 locNameToPositionMap->Add(locObjString_ParticleName, locObjString_Position);
349 if(locTempTargetPID !=
Unknown)
351 locTargetPID = locTempTargetPID;
353 if(locTargetParticleNumberMap_Current.find(locTargetPID) == locTargetParticleNumberMap_Current.end())
354 locTargetParticleNumberMap_Current[locTargetPID] = 1;
356 ++locTargetParticleNumberMap_Current[locTargetPID];
358 ostringstream locPIDStream, locPositionStream, locParticleNameStream;
359 locPIDStream <<
PDGtype(locTargetPID);
360 locObjString_PID =
new TObjString(locPIDStream.str().c_str());
362 locPositionStream << loc_i <<
"_" << -2;
363 locObjString_Position =
new TObjString(locPositionStream.str().c_str());
365 locPositionToPIDMap->Add(locObjString_Position, locObjString_PID);
367 locParticleNameStream <<
"Target";
368 if(locTargetParticleNumberMap[locTargetPID] > 1)
369 locParticleNameStream << locTargetParticleNumberMap_Current[locTargetPID];
370 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
372 locNameToPositionMap->Add(locObjString_ParticleName, locObjString_Position);
373 locNameToPIDMap->Add(locObjString_ParticleName, locObjString_PID);
374 locPositionToNameMap->Add(locObjString_Position, locObjString_ParticleName);
376 locParticleNameList->AddLast(locObjString_ParticleName);
381 for(
size_t loc_j = 0; loc_j < locFinalParticleIDs.size(); ++loc_j)
383 ostringstream locPIDStream, locPositionStream;
384 Particle_t locPID = locFinalParticleIDs[loc_j];
385 locPIDStream <<
PDGtype(locPID);
386 locObjString_PID =
new TObjString(locPIDStream.str().c_str());
388 locPositionStream << loc_i <<
"_" << loc_j;
389 locObjString_Position =
new TObjString(locPositionStream.str().c_str());
393 ostringstream locParticleNameStream;
395 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
396 locNameToPositionMap->Add(locObjString_ParticleName, locObjString_Position);
397 locPositionToNameMap->Add(locObjString_Position, locObjString_ParticleName);
398 locNameToPIDMap->Add(locObjString_ParticleName, locObjString_PID);
399 string locPIDName = locParticleNameStream.str() +
string(
"__PID");
400 locMiscInfoMap->Add(
new TObjString(locPIDName.c_str()), locObjString_PID);
401 ostringstream locMassStream;
403 string locMassName = locParticleNameStream.str() +
string(
"__Mass");
404 locMiscInfoMap->Add(
new TObjString(locMassName.c_str()),
new TObjString(locMassStream.str().c_str()));
405 locParticleNameList->AddLast(locObjString_ParticleName);
410 ostringstream locParticleNameStream;
413 if(locDecayStepIndex >= 0)
415 if(locDecayingParticleNumberMap_Current.find(locPID) == locDecayingParticleNumberMap_Current.end())
416 locDecayingParticleNumberMap_Current[locPID] = 1;
418 ++locDecayingParticleNumberMap_Current[locPID];
421 if(locDecayingParticleNumberMap[locPID] > 1)
422 locParticleNameStream << locDecayingParticleNumberMap_Current[locPID];
423 locDecayingParticleNames[locDecayStepIndex] = locParticleNameStream.str();
427 if(locParticleNumberMap_Current.find(locPID) == locParticleNumberMap_Current.end())
428 locParticleNumberMap_Current[locPID] = 1;
430 ++locParticleNumberMap_Current[locPID];
433 if(locParticleNumberMap[locPID] > 1)
434 locParticleNameStream << locParticleNumberMap_Current[locPID];
437 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
438 locParticleNameList->AddLast(locObjString_ParticleName);
440 locPositionToPIDMap->Add(locObjString_Position, locObjString_PID);
441 locNameToPositionMap->Add(locObjString_ParticleName, locObjString_Position);
442 locPositionToNameMap->Add(locObjString_Position, locObjString_ParticleName);
443 locNameToPIDMap->Add(locObjString_ParticleName, locObjString_PID);
444 if(locDecayStepIndex >= 0)
446 ostringstream locMassStream;
448 string locMassName = locParticleNameStream.str() +
string(
"__Mass");
449 locMiscInfoMap->Add(
new TObjString(locMassName.c_str()),
new TObjString(locMassStream.str().c_str()));
458 deque<size_t> locSavedSteps;
471 bool locStepAlreadySavedFlag =
false;
472 for(
size_t loc_j = 0; loc_j < locSavedSteps.size(); ++loc_j)
474 if(locSavedSteps[loc_j] != loc_i)
476 locStepAlreadySavedFlag =
true;
479 if(locStepAlreadySavedFlag)
483 ostringstream locParticleNameStream;
484 locParticleNameStream << locDecayingParticleNames[loc_i];
485 locObjString_ParticleName =
new TObjString(locParticleNameStream.str().c_str());
487 TList* locDecayProductNames = NULL;
488 Get_DecayProductNames(locReaction, loc_i, locPositionToNameMap, locDecayProductNames, locSavedSteps);
489 locDecayProductMap->Add(locObjString_ParticleName, locDecayProductNames);
492 return locPositionToNameMap;
499 if(locDecayProductNames == NULL)
500 locDecayProductNames =
new TList();
503 for(
size_t loc_j = 0; loc_j < locFinalParticleIDs.size(); ++loc_j)
507 if(locDecayStepIndex < 0)
509 ostringstream locPositionStream;
510 locPositionStream << locReactionStepIndex <<
"_" << loc_j;
511 locDecayProductNames->AddLast(locPositionToNameMap->GetValue(locPositionStream.str().c_str()));
516 Get_DecayProductNames(locReaction, locDecayStepIndex, locPositionToNameMap, locDecayProductNames, locSavedSteps);
519 locSavedSteps.push_back(locReactionStepIndex);
525 TMap* locMiscInfoMap = (TMap*)locUserInfo->FindObject(
"MiscInfoMap");
526 if(locMiscInfoMap == NULL)
528 locMiscInfoMap =
new TMap();
529 locMiscInfoMap->SetName(
"MiscInfoMap");
530 locUserInfo->Add(locMiscInfoMap);
534 ostringstream locPIDStream;
535 locPIDStream <<
PDGtype(locTargetPID);
536 locMiscInfoMap->Add(
new TObjString(
"Target__PID"),
new TObjString(locPIDStream.str().c_str()));
539 ostringstream locMassStream;
541 locMiscInfoMap->Add(
new TObjString(
"Target__Mass"),
new TObjString(locMassStream.str().c_str()));
544 ostringstream locZeroStream;
545 locZeroStream << 0.0;
546 TObjString* locObjString_Zero =
new TObjString(locZeroStream.str().c_str());
547 locMiscInfoMap->Add(
new TObjString(
"Target__CenterX"), locObjString_Zero);
548 locMiscInfoMap->Add(
new TObjString(
"Target__CenterY"), locObjString_Zero);
551 ostringstream locPositionStream;
553 TObjString* locObjString_Position =
new TObjString(locPositionStream.str().c_str());
554 locMiscInfoMap->Add(
new TObjString(
"Target__CenterZ"), locObjString_Position);
566 locBranchRegister.
Register_Single<ULong64_t>(
"NumPIDThrown_FinalState");
576 string locParticleBranchName =
"Thrown";
578 string locArraySizeString =
"NumThrown";
584 if(!locIsOnlyThrownFlag)
597 string locArraySizeString =
"NumBeam";
600 string locParticleBranchName =
"Beam";
614 string locArraySizeString =
"NumChargedHypos";
617 string locParticleBranchName =
"ChargedHypo";
685 string locArraySizeString =
"NumNeutralHypos";
686 string locParticleBranchName =
"NeutralHypo";
740 auto locReactionVertexInfo =
dVertexInfoMap.find(locReaction)->second;
741 string locNumComboString =
"NumCombos";
746 bool locKinFitFlag = (locKinFitType !=
d_NoFit);
747 bool locVertexKinFitFlag = locKinFitFlag && (locKinFitType !=
d_P4Fit);
771 map<Particle_t, unsigned int> locParticleNumberMap_Current;
784 ostringstream locPositionStream;
785 locPositionStream << loc_i <<
"_-1";
786 TObjString* locObjString = (TObjString*)locPositionToNameMap->GetValue(locPositionStream.str().c_str());
787 string locParticleBranchName = (
const char*)(locObjString->GetString());
794 auto locStepVertexInfo = locReactionVertexInfo->Get_StepVertexInfo(loc_i);
795 auto locParentVertexInfo = locStepVertexInfo->Get_ParentVertexInfo();
796 if(
IsDetachedVertex(locInitialPID) && locVertexKinFitFlag && (locParentVertexInfo !=
nullptr) && locStepVertexInfo->Get_FittableVertexFlag() && locParentVertexInfo->Get_FittableVertexFlag())
802 for(
size_t loc_j = 0; loc_j < locFinalParticleIDs.size(); ++loc_j)
805 if(locDecayStepIndex >= 0)
809 ostringstream locPositionStream;
810 locPositionStream << loc_i <<
"_" << loc_j;
811 TObjString* locObjString = (TObjString*)locPositionToNameMap->GetValue(locPositionStream.str().c_str());
812 string locParticleBranchName = (
const char*)(locObjString->GetString());
823 Particle_t locPID = locFinalParticleIDs[loc_j];
834 string locParticleBranchName =
"ComboBeam";
835 string locArraySizeString =
"NumCombos";
852 string locArraySizeString =
"NumCombos";
880 string locArraySizeString =
"NumCombos";
891 if(locParticleBranchName.substr(0, 6) ==
"Photon")
898 if(locParticleBranchName.substr(0, 6) ==
"Photon")
913 vector<const DMCThrown*> locMCThrowns_FinalState;
914 locEventLoop->Get(locMCThrowns_FinalState,
"FinalState");
916 vector<const DMCThrown*> locMCThrowns_Decaying;
917 locEventLoop->Get(locMCThrowns_Decaying,
"Decaying");
920 locEventLoop->GetSingle(locMCReaction);
922 ULong64_t locNumPIDThrown_FinalState = 0, locPIDThrown_Decaying = 0;
923 Compute_ThrownPIDInfo(locMCThrowns_FinalState, locMCThrowns_Decaying, locNumPIDThrown_FinalState, locPIDThrown_Decaying);
925 vector<const DMCThrown*> locMCThrownsToSave;
926 map<const DMCThrown*, unsigned int> locThrownIndexMap;
927 Group_ThrownParticles(locMCThrowns_FinalState, locMCThrowns_Decaying, locMCThrownsToSave, locThrownIndexMap);
929 vector<const DBeamPhoton*> locTaggedMCGenBeams;
930 locEventLoop->Get(locTaggedMCGenBeams,
"TAGGEDMCGEN");
932 vector<const DBeamPhoton*> locMCGenBeams;
933 locEventLoop->Get(locMCGenBeams,
"MCGEN");
935 const DBeamPhoton* locTaggedMCGenBeam = locTaggedMCGenBeams.empty() ? locMCGenBeams[0] : locTaggedMCGenBeams[0];
937 japp->RootWriteLock();
959 if(locDReactionTag ==
"Thrown")
961 cout <<
"WARNING: CANNOT FILL THROWN TREE WITH THIS FUNCTION." << endl;
965 vector<const DAnalysisResults*> locAnalysisResultsVector;
966 locEventLoop->Get(locAnalysisResultsVector);
968 vector<const DReaction*> locReactionsWithTag;
969 locEventLoop->Get(locReactionsWithTag, locDReactionTag.c_str());
971 for(
size_t loc_i = 0; loc_i < locAnalysisResultsVector.size(); ++loc_i)
973 deque<const DParticleCombo*> locPassedParticleCombos;
974 locAnalysisResultsVector[loc_i]->Get_PassedParticleCombos(locPassedParticleCombos);
975 if(locPassedParticleCombos.empty())
978 const DReaction* locReaction = locAnalysisResultsVector[loc_i]->Get_Reaction();
982 bool locReactionFoundFlag =
false;
983 for(
size_t loc_j = 0; loc_j < locReactionsWithTag.size(); ++loc_j)
985 if(locReactionsWithTag[loc_j] != locReaction)
987 locReactionFoundFlag =
true;
990 if(!locReactionFoundFlag)
993 Fill_DataTree(locEventLoop, locReaction, locPassedParticleCombos);
1001 cout <<
"WARNING: CANNOT FILL THROWN TREE WITH THIS FUNCTION." << endl;
1007 cout <<
"WARNING: ROOT TTREE OUTPUT NOT ENABLED FOR THIS DREACTION (" << locReaction->
Get_ReactionName() <<
")" << endl;
1013 vector<const DMCThrown*> locMCThrowns_FinalState;
1014 locEventLoop->Get(locMCThrowns_FinalState,
"FinalState");
1016 vector<const DMCThrown*> locMCThrowns_Decaying;
1017 locEventLoop->Get(locMCThrowns_Decaying,
"Decaying");
1019 vector<const DMCThrownMatching*> locMCThrownMatchingVector;
1020 locEventLoop->Get(locMCThrownMatchingVector);
1021 const DMCThrownMatching* locMCThrownMatching = locMCThrownMatchingVector.empty() ? NULL : locMCThrownMatchingVector[0];
1023 vector<const DMCReaction*> locMCReactions;
1024 locEventLoop->Get(locMCReactions);
1025 const DMCReaction* locMCReaction = locMCReactions.empty() ? NULL : locMCReactions[0];
1027 vector<const DBeamPhoton*> locTaggedMCGenBeams;
1028 locEventLoop->Get(locTaggedMCGenBeams,
"TAGGEDMCGEN");
1030 vector<const DBeamPhoton*> locMCGenBeams;
1031 locEventLoop->Get(locMCGenBeams,
"MCGEN");
1035 if (locTaggedMCGenBeams.empty()){
1036 if ( !locMCGenBeams.empty() ) locTaggedMCGenBeam = locMCGenBeams[0];
1038 else locTaggedMCGenBeam = locTaggedMCGenBeams[0];
1041 ULong64_t locNumPIDThrown_FinalState = 0, locPIDThrown_Decaying = 0;
1042 Compute_ThrownPIDInfo(locMCThrowns_FinalState, locMCThrowns_Decaying, locNumPIDThrown_FinalState, locPIDThrown_Decaying);
1045 vector<const DMCThrown*> locMCThrownsToSave;
1046 map<const DMCThrown*, unsigned int> locThrownIndexMap;
1047 Group_ThrownParticles(locMCThrowns_FinalState, locMCThrowns_Decaying, locMCThrownsToSave, locThrownIndexMap);
1055 set<Particle_t> locReactionPIDs;
1056 for(
size_t loc_j = 0; loc_j < locDetectedPIDs.size(); ++loc_j)
1057 locReactionPIDs.insert(locDetectedPIDs[loc_j]);
1060 vector<const DChargedTrackHypothesis*> locChargedTrackHypotheses;
1061 vector<const DNeutralParticleHypothesis*> locNeutralParticleHypotheses;
1062 if(locSaveUnusedFlag)
1075 vector<const DBeamPhoton*> locBeamPhotons =
Get_BeamPhotons(locParticleCombos);
1082 map<pair<oid_t, Particle_t>,
size_t> locObjectToArrayIndexMap;
1083 for(
size_t loc_i = 0; loc_i < locBeamPhotons.size(); ++loc_i)
1085 pair<oid_t, Particle_t> locBeamPair(locBeamPhotons[loc_i]->
id, locBeamPhotons[loc_i]->PID());
1086 locObjectToArrayIndexMap[locBeamPair] = loc_i;
1090 for(
size_t loc_i = 0; loc_i < locChargedTrackHypotheses.size(); ++loc_i)
1092 const DTrackTimeBased* locTrackTimeBased = locChargedTrackHypotheses[loc_i]->Get_TrackTimeBased();
1093 pair<oid_t, Particle_t> locTrackPair(locTrackTimeBased->id, locTrackTimeBased->
PID());
1094 locObjectToArrayIndexMap[locTrackPair] = loc_i;
1098 for(
size_t loc_i = 0; loc_i < locNeutralParticleHypotheses.size(); ++loc_i)
1100 const DNeutralShower* locNeutralShower = locNeutralParticleHypotheses[loc_i]->Get_NeutralShower();
1101 pair<oid_t, Particle_t> locShowerPair(locNeutralShower->id, locNeutralParticleHypotheses[loc_i]->PID());
1102 locObjectToArrayIndexMap[locShowerPair] = loc_i;
1109 locEventLoop->GetSingle(locDetectorMatches);
1112 const DVertex* locVertex = NULL;
1113 locEventLoop->GetSingle(locVertex);
1117 locEventLoop->GetSingle(locTrigger);
1121 japp->RootWriteLock();
1123 Bool_t locIsThrownTopologyFlag = kFALSE;
1124 vector<Bool_t> locIsTrueComboFlags;
1125 vector<Bool_t> locIsBDTSignalComboFlags;
1126 if(locMCReaction != NULL)
1129 locIsThrownTopologyFlag = (*locThrownTopologyAction)(locEventLoop, NULL);
1130 for(
size_t loc_i = 0; loc_i < locParticleCombos.size(); ++loc_i)
1133 locIsTrueComboFlags.push_back((*locTrueComboAction)(locEventLoop, locParticleCombos[loc_i]));
1136 locIsBDTSignalComboFlags.push_back((*locBDTSignalComboAction)(locEventLoop, locParticleCombos[loc_i]));
1146 locTreeFillData->
Fill_Single<UInt_t>(
"RunNumber", locEventLoop->GetJEvent().GetRunNumber());
1147 locTreeFillData->
Fill_Single<ULong64_t>(
"EventNumber", locEventLoop->GetJEvent().GetEventNumber());
1152 TLorentzVector locProductionTX4(locProductionX4.X(), locProductionX4.Y(), locProductionX4.Z(), locProductionX4.T());
1153 locTreeFillData->
Fill_Single<TLorentzVector>(
"X4_Production", locProductionTX4);
1156 if(locMCReaction != NULL)
1158 Fill_ThrownInfo(locTreeFillData, locMCReaction, locTaggedMCGenBeam, locMCThrownsToSave, locThrownIndexMap, locNumPIDThrown_FinalState, locPIDThrown_Decaying, locMCThrownMatching);
1159 locTreeFillData->
Fill_Single<Bool_t>(
"IsThrownTopology", locIsThrownTopologyFlag);
1166 locTreeFillData->
Fill_Single<UInt_t>(
"NumBeam", UInt_t(locBeamPhotons.size()));
1167 for(
size_t loc_i = 0; loc_i < locBeamPhotons.size(); ++loc_i)
1168 Fill_BeamData(locTreeFillData, loc_i, locBeamPhotons[loc_i], locVertex, locMCThrownMatching);
1172 locTreeFillData->
Fill_Single<UInt_t>(
"NumChargedHypos", UInt_t(locChargedTrackHypotheses.size()));
1173 for(
size_t loc_i = 0; loc_i < locChargedTrackHypotheses.size(); ++loc_i)
1174 Fill_ChargedHypo(locTreeFillData, loc_i, locChargedTrackHypotheses[loc_i], locMCThrownMatching, locThrownIndexMap, locDetectorMatches);
1177 locTreeFillData->
Fill_Single<UInt_t>(
"NumNeutralHypos", UInt_t(locNeutralParticleHypotheses.size()));
1178 for(
size_t loc_i = 0; loc_i < locNeutralParticleHypotheses.size(); ++loc_i)
1179 Fill_NeutralHypo(locTreeFillData, loc_i, locNeutralParticleHypotheses[loc_i], locMCThrownMatching, locThrownIndexMap, locDetectorMatches);
1182 double locSumPMag_UnusedTracks = 0.0;
1183 TVector3 locSumP3_UnusedTracks;
1185 locTreeFillData->
Fill_Single<UChar_t>(
"NumUnusedTracks", locNumUnusedTracks);
1188 locTreeFillData->
Fill_Single<UInt_t>(
"NumCombos", UInt_t(locParticleCombos.size()));
1189 for(
size_t loc_i = 0; loc_i < locParticleCombos.size(); ++loc_i)
1191 Fill_ComboData(locTreeFillData, locReaction, locParticleCombos[loc_i], loc_i, locObjectToArrayIndexMap);
1195 locTreeFillData->
Fill_Array<Float_t>(
"Energy_UnusedShowers", locEnergy_UnusedShowers, loc_i);
1198 double locSumPMag_UnusedTracks = 0;
1199 TVector3 locSumP3_UnusedTracks;
1201 locTreeFillData->
Fill_Array<Float_t>(
"SumPMag_UnusedTracks", locSumPMag_UnusedTracks, loc_i);
1202 locTreeFillData->
Fill_Array<TVector3>(
"SumP3_UnusedTracks", locSumP3_UnusedTracks, loc_i);
1204 if(locMCReaction != NULL)
1206 locTreeFillData->
Fill_Array<Bool_t>(
"IsTrueCombo", locIsTrueComboFlags[loc_i], loc_i);
1207 locTreeFillData->
Fill_Array<Bool_t>(
"IsBDTSignalCombo", locIsTrueComboFlags[loc_i], loc_i);
1212 Fill_CustomBranches_DataTree(locTreeFillData, locEventLoop, locReaction, locMCReaction, locMCThrownsToSave, locMCThrownMatching, locDetectorMatches, locBeamPhotons, locChargedTrackHypotheses, locNeutralParticleHypotheses, locParticleCombos);
1216 locTreeInterface->
Fill(*locTreeFillData);
1225 set<const DBeamPhoton*> locBeamPhotonSet;
1226 vector<const DBeamPhoton*> locBeamPhotons;
1227 for(
size_t loc_j = 0; loc_j < locParticleCombos.size(); ++loc_j)
1229 const DParticleComboStep* locParticleComboStep = locParticleCombos[loc_j]->Get_ParticleComboStep(0);
1231 if(locKinematicData == NULL)
1234 if(locBeamPhoton == NULL)
1236 if(locBeamPhotonSet.find(locBeamPhoton) != locBeamPhotonSet.end())
1238 locBeamPhotonSet.insert(locBeamPhoton);
1239 locBeamPhotons.push_back(locBeamPhoton);
1242 return locBeamPhotons;
1251 vector<const DChargedTrack*> locChargedTracks;
1252 locEventLoop->Get(locChargedTracks,
"Combo");
1254 vector<const DChargedTrackHypothesis*> locChargedHyposToSave;
1255 for(
auto& locChargedTrack : locChargedTracks)
1256 locChargedHyposToSave.insert(locChargedHyposToSave.end(), locChargedTrack->dChargedTrackHypotheses.begin(), locChargedTrack->dChargedTrackHypotheses.end());
1258 return locChargedHyposToSave;
1267 set<const DTrackTimeBased*> locUsedTimeBasedTracks;
1268 for(
auto& locCombo : locParticleCombos)
1270 auto locChargedParticles = locCombo->Get_FinalParticles_Measured(locReaction,
d_Charged);
1271 for(
auto& locParticle : locChargedParticles)
1272 locUsedTimeBasedTracks.insert(static_cast<const DChargedTrackHypothesis*>(locParticle)->Get_TrackTimeBased());
1276 for(
auto locIterator = locAllHypos.begin(); locIterator != locAllHypos.end();)
1278 const DTrackTimeBased* locTrackTimeBased = (*locIterator)->Get_TrackTimeBased();
1279 if(locUsedTimeBasedTracks.find(locTrackTimeBased) != locUsedTimeBasedTracks.end())
1282 locIterator = locAllHypos.erase(locIterator);
1294 vector<const DNeutralParticle*> locNeutralParticles;
1295 locEventLoop->Get(locNeutralParticles,
"Combo");
1297 vector<const DNeutralParticleHypothesis*> locNeutralHyposToSave;
1298 for(
auto& locNeutralParticle : locNeutralParticles)
1299 locNeutralHyposToSave.insert(locNeutralHyposToSave.end(), locNeutralParticle->dNeutralParticleHypotheses.begin(), locNeutralParticle->dNeutralParticleHypotheses.end());
1301 return locNeutralHyposToSave;
1307 vector<const DNeutralParticleHypothesis*> locAllHypos =
Get_NeutralHypotheses(locEventLoop, locReactionPIDs);
1310 set<pair<const DNeutralShower*, Particle_t> > locUsedNeutralShowers;
1311 for(
auto& locCombo : locParticleCombos)
1313 auto locNeutralParticles = locCombo->Get_FinalParticles_Measured(locReaction,
d_Neutral);
1314 for(
auto& locParticle : locNeutralParticles)
1317 pair<const DNeutralShower*, Particle_t> locShowerPair(locNeutralShower, locParticle->PID());
1318 locUsedNeutralShowers.insert(locShowerPair);
1323 for(
auto locIterator = locAllHypos.begin(); locIterator != locAllHypos.end();)
1325 const DNeutralShower* locNeutralShower = (*locIterator)->Get_NeutralShower();
1326 pair<const DNeutralShower*, Particle_t> locShowerPair(locNeutralShower, (*locIterator)->PID());
1327 if(locUsedNeutralShowers.find(locShowerPair) == locUsedNeutralShowers.end())
1328 locIterator = locAllHypos.erase(locIterator);
1344 locIsFinalStateInt = 1;
1346 if(locIsFinalStateInt == 1)
1348 ULong64_t locParticleMultiplexID = 1;
1349 for(
int loc_i = 0; loc_i < locPower; ++loc_i)
1350 locParticleMultiplexID *= ULong64_t(10);
1351 return locParticleMultiplexID;
1354 return (ULong64_t(1) << ULong64_t(locPower));
1357 void DEventWriterROOT::Compute_ThrownPIDInfo(
const vector<const DMCThrown*>& locMCThrowns_FinalState,
const vector<const DMCThrown*>& locMCThrowns_Decaying, ULong64_t& locNumPIDThrown_FinalState, ULong64_t& locPIDThrown_Decaying)
const
1360 locNumPIDThrown_FinalState = 0;
1361 for(
size_t loc_i = 0; loc_i < locMCThrowns_FinalState.size(); ++loc_i)
1363 Particle_t locPID = locMCThrowns_FinalState[loc_i]->PID();
1365 if(locPIDMultiplexID == 0)
1367 unsigned int locCurrentNumParticles = (locNumPIDThrown_FinalState / locPIDMultiplexID) % ULong64_t(10);
1368 if(locCurrentNumParticles != 9)
1369 locNumPIDThrown_FinalState += locPIDMultiplexID;
1372 locPIDThrown_Decaying = 0;
1373 for(
size_t loc_i = 0; loc_i < locMCThrowns_Decaying.size(); ++loc_i)
1375 Particle_t locPID = locMCThrowns_Decaying[loc_i]->PID();
1377 if(locPIDMultiplexID == 0)
1380 locPIDThrown_Decaying |= locPIDMultiplexID;
1383 unsigned int locCurrentNumParticles = (locNumPIDThrown_FinalState / locPIDMultiplexID) % ULong64_t(10);
1384 if(locCurrentNumParticles != 9)
1385 locNumPIDThrown_FinalState += locPIDMultiplexID;
1390 void DEventWriterROOT::Group_ThrownParticles(
const vector<const DMCThrown*>& locMCThrowns_FinalState,
const vector<const DMCThrown*>& locMCThrowns_Decaying, vector<const DMCThrown*>& locMCThrownsToSave, map<const DMCThrown*, unsigned int>& locThrownIndexMap)
const
1392 locMCThrownsToSave.clear();
1393 locMCThrownsToSave.insert(locMCThrownsToSave.end(), locMCThrowns_FinalState.begin(), locMCThrowns_FinalState.end());
1394 locMCThrownsToSave.insert(locMCThrownsToSave.end(), locMCThrowns_Decaying.begin(), locMCThrowns_Decaying.end());
1397 locThrownIndexMap.clear();
1398 for(
size_t loc_i = 0; loc_i < locMCThrownsToSave.size(); ++loc_i)
1399 locThrownIndexMap[locMCThrownsToSave[loc_i]] = loc_i;
1414 TLorentzVector locThrownBeamTX4(locThrownBeamX3.X(), locThrownBeamX3.Y(), locThrownBeamX3.Z(), locMCReaction->
beam.
time());
1418 TLorentzVector locThrownBeamTP4(locThrownBeamP4.Px(), locThrownBeamP4.Py(), locThrownBeamP4.Pz(), locThrownBeamP4.E());
1422 locTreeFillData->
Fill_Single<UInt_t>(
"NumThrown", locMCThrowns.size());
1423 for(
size_t loc_i = 0; loc_i < locMCThrowns.size(); ++loc_i)
1427 locTreeFillData->
Fill_Single<ULong64_t>(
"NumPIDThrown_FinalState", locNumPIDThrown_FinalState);
1428 locTreeFillData->
Fill_Single<ULong64_t>(
"PIDThrown_Decaying", locPIDThrown_Decaying);
1433 string locParticleBranchName =
"Thrown";
1436 int locParentIndex = -1;
1437 map<const DMCThrown*, unsigned int>::const_iterator locIterator;
1438 for(locIterator = locThrownIndexMap.begin(); locIterator != locThrownIndexMap.end(); ++locIterator)
1440 if(locIterator->first->myid != locMCThrown->
parentid)
1442 locParentIndex = locIterator->second;
1449 if(locMCThrownMatching != NULL)
1451 Int_t locMatchID = -1;
1452 double locMatchFOM = -1.0;
1456 if(locChargedTrack != NULL)
1464 if(locNeutralShower != NULL)
1465 locMatchID = locNeutralShower->
dShowerID;
1472 TLorentzVector locX4_Thrown(locMCThrown->
position().X(), locMCThrown->
position().Y(), locMCThrown->
position().Z(), locMCThrown->
time());
1480 string locParticleBranchName =
"Beam";
1486 if(locMCThrownMatching != NULL)
1489 locTreeFillData->
Fill_Array<Bool_t>(
Build_BranchName(locParticleBranchName,
"IsGenerator"), locIsGeneratorFlag, locArrayIndex);
1497 double locDeltaPath = (locProductionVertex - locTargetCenter).Mag();
1498 bool locDownstreamFlag = ((locProductionVertex.Z() - locTargetCenter.Z()) > 0.0);
1499 double locDeltaT = locDownstreamFlag ? locDeltaPath/29.9792458 : -1.0*locDeltaPath/29.9792458;
1500 double locTime = locBeamPhoton->
time() + locDeltaT;
1502 TLorentzVector locX4_Measured(locProductionVertex.X(), locProductionVertex.Y(), locProductionVertex.Z(), locTime);
1503 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_Measured"), locX4_Measured, locArrayIndex);
1506 TLorentzVector locP4_Measured(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
1507 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_Measured"), locP4_Measured, locArrayIndex);
1512 string locParticleBranchName =
"ChargedHypo";
1526 locTreeFillData->
Fill_Array<Int_t>(
Build_BranchName(locParticleBranchName,
"TrackID"), locTrackTimeBased->candidateid, locArrayIndex);
1530 if(locMCThrownMatching != NULL)
1532 Int_t locThrownIndex = -1;
1533 double locMatchFOM = 0.0;
1535 if(locMCThrown != NULL)
1536 locThrownIndex = locThrownIndexMap.find(locMCThrown)->second;
1542 TLorentzVector locTX4_Measured(locPosition.X(), locPosition.Y(), locPosition.Z(), locChargedTrackHypothesis->
time());
1543 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_Measured"), locTX4_Measured, locArrayIndex);
1546 TLorentzVector locP4_Measured(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
1547 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_Measured"), locP4_Measured, locArrayIndex);
1550 locTreeFillData->
Fill_Array<UInt_t>(
Build_BranchName(locParticleBranchName,
"NDF_Tracking"), locTrackTimeBased->Ndof, locArrayIndex);
1551 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"ChiSq_Tracking"), locTrackTimeBased->chisq, locArrayIndex);
1554 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"dEdx_CDC"), locTrackTimeBased->ddEdx_CDC_amp, locArrayIndex);
1555 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"dEdx_CDC_integral"), locTrackTimeBased->ddEdx_CDC, locArrayIndex);
1556 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"dEdx_FDC"), locTrackTimeBased->ddEdx_FDC, locArrayIndex);
1563 double locBCALEnergy = (locBCALShower != NULL) ? locBCALShower->
E : 0.0;
1565 double locBCALPreshowerEnergy = (locBCALShower != NULL) ? locBCALShower->
E_preshower : 0.0;
1566 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALPreshower"), locBCALPreshowerEnergy, locArrayIndex);
1568 double locBCALLayer2Energy = (locBCALShower != NULL) ? locBCALShower->
E_L2 : 0.0;
1569 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer2"), locBCALLayer2Energy, locArrayIndex);
1570 double locBCALLayer3Energy = (locBCALShower != NULL) ? locBCALShower->
E_L3 : 0.0;
1571 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer3"), locBCALLayer3Energy, locArrayIndex);
1572 double locBCALLayer4Energy = (locBCALShower != NULL) ? locBCALShower->
E_L4 : 0.0;
1573 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer4"), locBCALLayer4Energy, locArrayIndex);
1576 double locFCALEnergy = (locFCALShower != NULL) ? locFCALShower->
getEnergy() : 0.0;
1580 double locSigLongBCAL = (locBCALShower != NULL) ? locBCALShower->
sigLong : 0.0;
1581 double locSigThetaBCAL = (locBCALShower != NULL) ? locBCALShower->
sigTheta : 0.0;
1582 double locSigTransBCAL = (locBCALShower != NULL) ? locBCALShower->
sigTrans : 0.0;
1583 double locRMSTimeBCAL = (locBCALShower != NULL) ? locBCALShower->
rmsTime : 0.0;
1584 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigLong_BCAL"), locSigLongBCAL, locArrayIndex);
1585 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigTheta_BCAL"), locSigThetaBCAL, locArrayIndex);
1586 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigTrans_BCAL"), locSigTransBCAL, locArrayIndex);
1587 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"RMSTime_BCAL"), locRMSTimeBCAL, locArrayIndex);
1589 double locE1E9FCAL = (locFCALShower != NULL) ? locFCALShower->
getE1E9() : 0.0;
1590 double locE9E25FCAL = (locFCALShower != NULL) ? locFCALShower->
getE9E25() : 0.0;
1591 double locSumUFCAL = (locFCALShower != NULL) ? locFCALShower->
getSumU() : 0.0;
1592 double locSumVFCAL = (locFCALShower != NULL) ? locFCALShower->
getSumV() : 0.0;
1599 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"HitTime"), locChargedTrackHypothesis->
t1(), locArrayIndex);
1600 double locStartTimeError = locChargedTrackHypothesis->
t0_err();
1601 double locRFDeltaTVariance = (*locChargedTrackHypothesis->
errorMatrix())(6, 6) + locStartTimeError*locStartTimeError;
1602 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"RFDeltaTVar"), locRFDeltaTVariance, locArrayIndex);
1610 double locTrackBCAL_DeltaPhi = 999.0, locTrackBCAL_DeltaZ = 999.0;
1616 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackBCAL_DeltaPhi"), locTrackBCAL_DeltaPhi, locArrayIndex);
1617 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackBCAL_DeltaZ"), locTrackBCAL_DeltaZ, locArrayIndex);
1620 double locDOCAToShower_FCAL = 999.0;
1623 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackFCAL_DOCA"), locDOCAToShower_FCAL, locArrayIndex);
1628 locTreeFillData->
Fill_Array<Int_t>(
Build_BranchName(locParticleBranchName,
"NumPhotons_DIRC"), locDIRCNumPhotons, locArrayIndex);
1644 string locParticleBranchName =
"NeutralHypo";
1649 locNeutralShower->GetSingle(locBCALShower);
1651 locNeutralShower->GetSingle(locFCALShower);
1659 if(locMCThrownMatching != NULL)
1661 Int_t locThrownIndex = -1;
1662 double locMatchFOM = 0.0;
1664 if(locMCThrown != NULL)
1665 locThrownIndex = locThrownIndexMap.find(locMCThrown)->second;
1671 TLorentzVector locX4_Measured(locPosition.X(), locPosition.Y(), locPosition.Z(), locNeutralParticleHypothesis->
time());
1672 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_Measured"), locX4_Measured, locArrayIndex);
1675 TLorentzVector locP4_Measured(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
1676 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_Measured"), locP4_Measured, locArrayIndex);
1686 double locBCALEnergy = (locDetector ==
SYS_BCAL) ? locNeutralShower->
dEnergy : 0.0;
1688 double locBCALPreshowerEnergy = (locDetector ==
SYS_BCAL) ? static_cast<const DBCALShower*>(locNeutralShower->
dBCALFCALShower)->E_preshower : 0.0;
1689 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALPreshower"), locBCALPreshowerEnergy, locArrayIndex);
1691 double locBCALLayer2Energy = (locBCALShower != NULL) ? locBCALShower->
E_L2 : 0.0;
1692 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer2"), locBCALLayer2Energy, locArrayIndex);
1693 double locBCALLayer3Energy = (locBCALShower != NULL) ? locBCALShower->
E_L3 : 0.0;
1694 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer3"), locBCALLayer3Energy, locArrayIndex);
1695 double locBCALLayer4Energy = (locBCALShower != NULL) ? locBCALShower->
E_L4 : 0.0;
1696 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"Energy_BCALLayer4"), locBCALLayer4Energy, locArrayIndex);
1699 double locFCALEnergy = (locDetector ==
SYS_FCAL) ? locNeutralShower->
dEnergy : 0.0;
1704 TLorentzVector locTX4_Shower(locHitDX4.X(), locHitDX4.Y(), locHitDX4.Z(), locHitDX4.T());
1705 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_Shower"), locTX4_Shower, locArrayIndex);
1708 double locSigLongBCAL = (locBCALShower != NULL) ? locBCALShower->
sigLong : 0.0;
1709 double locSigThetaBCAL = (locBCALShower != NULL) ? locBCALShower->
sigTheta : 0.0;
1710 double locSigTransBCAL = (locBCALShower != NULL) ? locBCALShower->
sigTrans : 0.0;
1711 double locRMSTimeBCAL = (locBCALShower != NULL) ? locBCALShower->
rmsTime : 0.0;
1712 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigLong_BCAL"), locSigLongBCAL, locArrayIndex);
1713 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigTheta_BCAL"), locSigThetaBCAL, locArrayIndex);
1714 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"SigTrans_BCAL"), locSigTransBCAL, locArrayIndex);
1715 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"RMSTime_BCAL"), locRMSTimeBCAL, locArrayIndex);
1718 double locE1E9FCAL = (locFCALShower != NULL) ? locFCALShower->
getE1E9() : 0.0;
1719 double locE9E25FCAL = (locFCALShower != NULL) ? locFCALShower->
getE9E25() : 0.0;
1720 double locSumUFCAL = (locFCALShower != NULL) ? locFCALShower->
getSumU() : 0.0;
1721 double locSumVFCAL = (locFCALShower != NULL) ? locFCALShower->
getSumV() : 0.0;
1729 double locNearestTrackBCALDeltaPhi = 999.0, locNearestTrackBCALDeltaZ = 999.0;
1730 if(locBCALShower != NULL)
1734 locNearestTrackBCALDeltaPhi = 999.0;
1735 locNearestTrackBCALDeltaZ = 999.0;
1737 else if((locNearestTrackBCALDeltaPhi > 999.0) || (locNearestTrackBCALDeltaZ > 999.0))
1739 locNearestTrackBCALDeltaPhi = 999.0;
1740 locNearestTrackBCALDeltaZ = 999.0;
1743 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackBCAL_DeltaPhi"), locNearestTrackBCALDeltaPhi, locArrayIndex);
1744 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackBCAL_DeltaZ"), locNearestTrackBCALDeltaZ, locArrayIndex);
1747 double locDistanceToNearestTrack_FCAL = 999.0;
1748 if(locFCALShower != NULL)
1751 locDistanceToNearestTrack_FCAL = 999.0;
1752 if(locDistanceToNearestTrack_FCAL > 999.0)
1753 locDistanceToNearestTrack_FCAL = 999.0;
1755 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"TrackFCAL_DOCA"), locDistanceToNearestTrack_FCAL, locArrayIndex);
1758 double locStartTimeError = locNeutralParticleHypothesis->
t0_err();
1759 double locPhotonRFDeltaTVar = (*locNeutralParticleHypothesis->
errorMatrix())(6, 6) + locStartTimeError*locStartTimeError;
1761 locPhotonRFDeltaTVar = 0.0;
1762 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"PhotonRFDeltaTVar"), locPhotonRFDeltaTVar, locArrayIndex);
1772 locTreeFillData->
Fill_Array<Bool_t>(
"IsComboCut", kFALSE, locComboIndex);
1775 double locRFTime = (locEventRFBunch != NULL) ? locEventRFBunch->
dTime : numeric_limits<double>::quiet_NaN();
1776 locTreeFillData->
Fill_Array<Float_t>(
"RFTime_Measured", locRFTime, locComboIndex);
1780 bool locKinFitFlag = (locKinFitType !=
d_NoFit);
1783 if(locKinFitResults != NULL)
1785 locTreeFillData->
Fill_Array<Float_t>(
"ChiSq_KinFit", locKinFitResults->
Get_ChiSq(), locComboIndex);
1786 locTreeFillData->
Fill_Array<UInt_t>(
"NDF_KinFit", locKinFitResults->
Get_NDF(), locComboIndex);
1789 double locRFTime_KinFit = -9.9E9;
1790 locTreeFillData->
Fill_Array<Float_t>(
"RFTime_KinFit", locRFTime_KinFit, locComboIndex);
1795 locTreeFillData->
Fill_Array<Float_t>(
"ChiSq_KinFit", 0.0, locComboIndex);
1796 locTreeFillData->
Fill_Array<UInt_t>(
"NDF_KinFit", 0, locComboIndex);
1798 locTreeFillData->
Fill_Array<Float_t>(
"RFTime_KinFit", -9.9E9, locComboIndex);
1804 Fill_ComboStepData(locTreeFillData, locReaction, locParticleCombo, loc_i, locComboIndex, locKinFitType, locObjectToArrayIndexMap);
1809 auto locReactionVertexInfo =
dVertexInfoMap.find(locReaction)->second;
1811 const TList* locUserInfo =
dTreeInterfaceMap.find(locReaction)->second->Get_UserInfo();
1812 const TMap* locPositionToNameMap = (TMap*)locUserInfo->FindObject(
"PositionToNameMap");
1816 TLorentzVector locStepTX4(locStepX4.X(), locStepX4.Y(), locStepX4.Z(), locStepX4.T());
1819 Particle_t locInitialPID = locReactionStep->Get_InitialPID();
1820 const DKinematicData* locInitialParticle = locParticleComboStep->Get_InitialParticle();
1822 if(locBeamPhoton != NULL)
1824 const DKinematicData* locInitParticleMeasured = locParticleComboStep->Get_InitialParticle_Measured();
1828 pair<oid_t, Particle_t> locBeamPair(locMeasuredBeamPhoton->id, locMeasuredBeamPhoton->
PID());
1829 size_t locBeamIndex = locObjectToArrayIndexMap.find(locBeamPair)->second;
1831 Fill_ComboBeamData(locTreeFillData, locComboIndex, locBeamPhoton, locBeamIndex, locKinFitType);
1836 ostringstream locPositionStream;
1837 locPositionStream << locStepIndex <<
"_-1";
1838 TObjString* locObjString = (TObjString*)locPositionToNameMap->GetValue(locPositionStream.str().c_str());
1839 string locParticleBranchName = (
const char*)(locObjString->GetString());
1842 if(
IsFixedMass(locInitialPID) && locReactionStep->Get_KinFitConstrainInitMassFlag() && locP4FitFlag)
1844 TLorentzVector locDecayP4;
1845 if(locInitialParticle == NULL)
1850 locDecayP4.SetPxPyPzE(locDecayDP4.Px(), locDecayDP4.Py(), locDecayDP4.Pz(), locDecayDP4.E());
1853 locDecayP4.SetPxPyPzE(locInitialParticle->
momentum().X(), locInitialParticle->
momentum().Y(), locInitialParticle->
momentum().Z(), locInitialParticle->
energy());
1854 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_KinFit"), locDecayP4, locComboIndex);
1860 auto locStepVertexInfo = locReactionVertexInfo->Get_StepVertexInfo(locStepIndex);
1861 auto locParentVertexInfo = locStepVertexInfo->Get_ParentVertexInfo();
1862 auto locVertexKinFitFlag = ((locKinFitType !=
d_P4Fit) && (locKinFitType !=
d_NoFit));
1863 if(
IsDetachedVertex(locInitialPID) && locVertexKinFitFlag && (locParentVertexInfo !=
nullptr) && locStepVertexInfo->Get_FittableVertexFlag() && locParentVertexInfo->Get_FittableVertexFlag())
1865 auto locKinFitParticle = locParticleComboStep->Get_InitialKinFitParticle();
1866 auto locPathLengthSigma = locKinFitParticle->Get_PathLengthUncertainty();
1867 locTreeFillData->
Fill_Array<Float_t>(
Build_BranchName(locParticleBranchName,
"PathLengthSigma"), locPathLengthSigma, locComboIndex);
1872 for(
size_t loc_i = 0; loc_i < locParticleComboStep->Get_NumFinalParticles(); ++loc_i)
1874 Particle_t locPID = locReactionStep->Get_FinalPID(loc_i);
1875 const DKinematicData* locKinematicData = locParticleComboStep->Get_FinalParticle(loc_i);
1876 const DKinematicData* locKinematicData_Measured = locParticleComboStep->Get_FinalParticle_Measured(loc_i);
1883 ostringstream locPositionStream;
1884 locPositionStream << locStepIndex <<
"_" << loc_i;
1885 TObjString* locObjString = (TObjString*)locPositionToNameMap->GetValue(locPositionStream.str().c_str());
1886 string locParticleBranchName = (
const char*)(locObjString->GetString());
1889 if(locReactionStep->Get_MissingParticleIndex() == int(loc_i))
1893 TLorentzVector locMissingP4;
1894 if(locKinematicData == NULL)
1899 locMissingP4.SetPxPyPzE(locMissingDP4.Px(), locMissingDP4.Py(), locMissingDP4.Pz(), locMissingDP4.E());
1902 locMissingP4.SetPxPyPzE(locKinematicData->
momentum().X(), locKinematicData->
momentum().Y(), locKinematicData->
momentum().Z(), locKinematicData->
energy());
1904 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_KinFit"), locMissingP4, locComboIndex);
1917 pair<oid_t, Particle_t> locNeutralPair(locNeutralShower->id, locNeutralHypo->
PID());
1918 size_t locNeutralIndex = locObjectToArrayIndexMap.find(locNeutralPair)->second;
1920 Fill_ComboNeutralData(locTreeFillData, locComboIndex, locParticleBranchName, locMeasuredNeutralHypo, locNeutralHypo, locNeutralIndex, locKinFitType);
1929 pair<oid_t, Particle_t> locTrackPair(locTrackTimeBased->id, locChargedHypo->
PID());
1930 size_t locChargedIndex = locObjectToArrayIndexMap.find(locTrackPair)->second;
1932 Fill_ComboChargedData(locTreeFillData, locComboIndex, locParticleBranchName, locMeasuredChargedHypo, locChargedHypo, locChargedIndex, locKinFitType);
1939 string locParticleBranchName =
"ComboBeam";
1950 TLorentzVector locX4_KinFit(locPosition.X(), locPosition.Y(), locPosition.Z(), locBeamPhoton->
time());
1951 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_KinFit"), locX4_KinFit, locComboIndex);
1958 TLorentzVector locP4_KinFit(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
1959 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_KinFit"), locP4_KinFit, locComboIndex);
1987 TLorentzVector locX4_KinFit(locPosition.X(), locPosition.Y(), locPosition.Z(), locChargedHypo->
time());
1988 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_KinFit"), locX4_KinFit, locComboIndex);
1993 TLorentzVector locP4_KinFit(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
1994 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_KinFit"), locP4_KinFit, locComboIndex);
2005 TLorentzVector locX4_Measured(locPosition.X(), locPosition.Y(), locPosition.Z(), locMeasuredNeutralHypo->
time());
2006 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_Measured"), locX4_Measured, locComboIndex);
2009 TLorentzVector locP4_Measured(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
2010 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_Measured"), locP4_Measured, locComboIndex);
2014 if(locParticleBranchName.substr(0, 6) ==
"Photon")
2021 if(locParticleBranchName.substr(0, 6) ==
"Photon")
2032 TLorentzVector locX4_KinFit(locPosition.X(), locPosition.Y(), locPosition.Z(), locNeutralHypo->
time());
2033 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"X4_KinFit"), locX4_KinFit, locComboIndex);
2038 TLorentzVector locP4_KinFit(locDP4.Px(), locDP4.Py(), locDP4.Pz(), locDP4.E());
2039 locTreeFillData->
Fill_Array<TLorentzVector>(
Build_BranchName(locParticleBranchName,
"P4_KinFit"), locP4_KinFit, locComboIndex);
string Get_TTreeOutputFileName(void) const
bool Get_IsFirstStepBeam(const DReaction *locReaction)
void Fill_ComboChargedData(DTreeFillData *locTreeFillData, unsigned int locComboIndex, string locParticleBranchName, const DChargedTrackHypothesis *locMeasuredChargedHypo, const DChargedTrackHypothesis *locChargedHypo, size_t locChargedIndex, DKinFitType locKinFitType) const
void Fill_ThrownParticleData(DTreeFillData *locTreeFillData, unsigned int locArrayIndex, const DMCThrown *locMCThrown, const map< const DMCThrown *, unsigned int > &locThrownIndexMap, const DMCThrownMatching *locMCThrownMatching) const
double Get_ChiSq_Timing(void) const
int Calc_Momentum_UnusedTracks(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo, double &locSumPMag_UnusedTracks, TVector3 &locSumP3_UnusedTracks) const
vector< const DChargedTrackHypothesis * > Get_ChargedHypotheses_Used(JEventLoop *locEventLoop, const DReaction *locReaction, const deque< const DParticleCombo * > &locParticleCombos) const
bool Get_DistanceToNearestTrack(const DBCALShower *locBCALShower, double &locDistance) const
unsigned int Get_NDF(void) const
size_t Get_NumParticleComboSteps(void) const
void Create_Branches_BeamComboParticle(DTreeBranchRegister &locTreeBranchRegister, Particle_t locBeamPID, DKinFitType locKinFitType) const
DKinFitType Get_KinFitType(void) const
void Fill_ComboStepData(DTreeFillData *locTreeFillData, const DReaction *locReaction, const DParticleCombo *locParticleCombo, unsigned int locStepIndex, unsigned int locComboIndex, DKinFitType locKinFitType, const map< pair< oid_t, Particle_t >, size_t > &locObjectToArrayIndexMap) const
unsigned int dInitNumNeutralArraySize
bool Get_KinFitConstrainInitMassFlag(void) const
map< const DReaction *, const DReactionVertexInfo * > dVertexInfoMap
double energy(void) const
uint32_t Get_L1TriggerBits(void) const
vector< const DReaction * > Get_Reactions(JEventLoop *locEventLoop)
void Compute_ThrownPIDInfo(const vector< const DMCThrown * > &locMCThrowns_FinalState, const vector< const DMCThrown * > &locMCThrowns_Decaying, ULong64_t &locNumPIDThrown_FinalState, ULong64_t &locPIDThrown_Decaying) const
virtual void Create_CustomBranches_DataTree(DTreeBranchRegister &locBranchRegister, JEventLoop *locEventLoop, const DReaction *locReaction, bool locIsMCDataFlag) const
void Register_Single(string locBranchName)
ULong64_t Calc_ParticleMultiplexID(Particle_t locPID) const
double t0_err(void) const
map< const DReaction *, DTreeFillData * > dTreeFillDataMap
void Fill_Array(string locBranchName, const DType &locData, size_t locArrayIndex)
const DVector3 & position(void) const
bool Get_EnableTTreeOutputFlag(void) const
const DTrackTimeBased * Get_TrackTimeBased(void) const
void Create_Branches_NeutralHypotheses(DTreeBranchRegister &locTreeBranchRegister, bool locIsMCDataFlag) const
Particle_t Get_TargetPID(void) const
bool Get_SaveUnusedFlag(void) const
bool Create_Branches(const DTreeBranchRegister &locTreeBranchRegister)
static unsigned short int IsDetachedVertex(Particle_t p)
double Calc_Energy_UnusedShowers(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo) const
static char * ParticleType(Particle_t p)
static bool BCAL_VERBOSE_OUTPUT
const JObject * dBCALFCALShower
void Fill_NeutralHypo(DTreeFillData *locTreeFillData, unsigned int locArrayIndex, const DNeutralParticleHypothesis *locPhotonHypothesis, const DMCThrownMatching *locMCThrownMatching, const map< const DMCThrown *, unsigned int > &locThrownIndexMap, const DDetectorMatches *locDetectorMatches) const
static int ParticleMultiplexPower(Particle_t locPID)
void Create_Branches_ThrownParticles(DTreeBranchRegister &locTreeBranchRegister, bool locIsOnlyThrownFlag) const
double measuredBeta(void) const
const DKinematicData * Get_InitialParticle_Measured(void) const
void Fill_DataTree(JEventLoop *locEventLoop, const DReaction *locReaction, deque< const DParticleCombo * > &locParticleCombos) const
TLorentzVector DLorentzVector
double t0_err(void) const
double Get_ChiSq(void) const
unsigned int Get_NDF_Timing(void) const
int pdgtype
PDG particle type (not used by GEANT)
const DEventRFBunch * Get_EventRFBunch(void) const
static int ParticleCharge(Particle_t p)
void Fill_ComboBeamData(DTreeFillData *locTreeFillData, unsigned int locComboIndex, const DBeamPhoton *locBeamPhoton, size_t locBeamIndex, DKinFitType locKinFitType) const
void Create_DataTree(const DReaction *locReaction, JEventLoop *locEventLoop, bool locIsMCDataFlag)
const DNeutralShower * Get_NeutralShower(void) const
static int PDGtype(Particle_t p)
void Initialize(JEventLoop *locEventLoop)
double Get_ChiSq(void) const
shared_ptr< const DTOFHitMatchParams > Get_TOFHitMatchParams(void) const
DetectorSystem_t dDetectorSystem
vector< Particle_t > Get_FinalPIDs(int locStepIndex=-1, bool locIncludeMissingFlag=true, bool locIncludeDecayingFlag=true, Charge_t locCharge=d_AllCharges, bool locIncludeDuplicatesFlag=true) const
map< const DReaction *, DTreeInterface * > dTreeInterfaceMap
DLorentzVector dSpacetimeVertex
unsigned int Get_NDF_DCdEdx(void) const
string Get_ConstraintInfo(const DReactionVertexInfo *locReactionVertexInfo, const DReaction *locReaction, size_t &locNumConstraints, size_t &locNumUnknowns) const
const DChargedTrack * Get_MatchingChargedTrack(const DMCThrown *locInputMCThrown, double &locMatchFOM) const
DLorentzVector Calc_FinalStateP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, size_t locStepIndex, bool locUseKinFitDataFlag) const
unsigned int dInitNumThrownArraySize
void Register_ClonesArray(string locBranchName, size_t locInitialArraySize=10)
TMap * Create_UserInfoMaps(DTreeBranchRegister &locTreeBranchRegister, JEventLoop *locEventLoop, const DReaction *locReaction) const
vector< const DNeutralParticleHypothesis * > Get_NeutralHypotheses_Used(JEventLoop *locEventLoop, const DReaction *locReaction, const set< Particle_t > &locReactionPIDs, const deque< const DParticleCombo * > &locParticleCombos) const
void Fill(DTreeFillData &locTreeFillData)
Particle_t Get_InitialPID(void) const
static DTreeInterface * Create_DTreeInterface(string locTreeName, string locFileName)
void Fill_ThrownInfo(DTreeFillData *locTreeFillData, const DMCReaction *locMCReaction, const DBeamPhoton *locTaggedMCGenBeam, const vector< const DMCThrown * > &locMCThrowns, const map< const DMCThrown *, unsigned int > &locThrownIndexMap, ULong64_t locNumPIDThrown_FinalState, ULong64_t locPIDThrown_Decaying, const DMCThrownMatching *locMCThrownMatching=NULL) const
void Create_Branches_ComboNeutral(DTreeBranchRegister &locTreeBranchRegister, string locParticleBranchName, DKinFitType locKinFitType) const
map< const DReaction *, DCutAction_ThrownTopology * > dCutActionMap_ThrownTopology
const DNeutralShower * Get_MatchingNeutralShower(const DMCThrown *locInputMCThrown, double &locMatchFOM) const
void Create_UserTargetInfo(DTreeBranchRegister &locTreeBranchRegister, Particle_t locTargetPID) const
void Set_TreeIndexBranchNames(string locTreeIndex_MajorBranchName, string locTreeIndex_MinorBranchName="0")
virtual void Fill_CustomBranches_ThrownTree(DTreeFillData *locTreeFillData, JEventLoop *locEventLoop, const DMCReaction *locMCReaction, const vector< const DMCThrown * > &locMCThrowns) const
vector< const DChargedTrackHypothesis * > Get_ChargedHypotheses(JEventLoop *locEventLoop) const
DLorentzVector Calc_MissingP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, bool locUseKinFitDataFlag) const
int parentid
id of parent of this particle from original generator
const DBeamPhoton * Get_TaggedMCGENBeamPhoton(void) const
DGeometry * GetDGeometry(unsigned int run_number)
string Get_ReactionName(void) const
static unsigned short int IsFixedMass(Particle_t p)
void Fill_ChargedHypo(DTreeFillData *locTreeFillData, unsigned int locArrayIndex, const DChargedTrackHypothesis *locChargedTrackHypothesis, const DMCThrownMatching *locMCThrownMatching, const map< const DMCThrown *, unsigned int > &locThrownIndexMap, const DDetectorMatches *locDetectorMatches) const
vector< const DBeamPhoton * > Get_BeamPhotons(const deque< const DParticleCombo * > &locParticleCombos) const
unsigned int dInitNumComboArraySize
void Register_FundamentalArray(string locBranchName, string locArraySizeName, size_t locInitialArraySize=10)
shared_ptr< const DDIRCMatchParams > Get_DIRCMatchParams(void) const
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
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
static int Is_FinalStateParticle(Particle_t locPID)
string Convert_ToBranchName(string locInputName) const
DLorentzVector Get_SpacetimeVertex(void) const
DLorentzVector dSpacetimeVertex
void Fill_BeamData(DTreeFillData *locTreeFillData, unsigned int locArrayIndex, const DBeamPhoton *locBeamPhoton, const DVertex *locVertex, const DMCThrownMatching *locMCThrownMatching) const
int Get_MissingParticleIndex(void) const
DTreeFillData dThrownTreeFillData
shared_ptr< const DSCHitMatchParams > Get_SCHitMatchParams(void) const
vector< const DNeutralParticleHypothesis * > Get_NeutralHypotheses(JEventLoop *locEventLoop, const set< Particle_t > &locReactionPIDs) const
TList * Get_UserInfo(void) const
void Create_Branches_ComboTrack(DTreeBranchRegister &locTreeBranchRegister, string locParticleBranchName, DKinFitType locKinFitType) const
const DAnalysisUtilities * dAnalysisUtilities
DLorentzVector lorentzMomentum(void) const
void Fill_DataTrees(JEventLoop *locEventLoop, string locDReactionTag) const
static double ParticleMass(Particle_t p)
shared_ptr< const DFCALShowerMatchParams > Get_FCALShowerMatchParams(void) const
virtual ~DEventWriterROOT(void)
double Get_ChiSq_DCdEdx(void) const
void Create_ThrownTree(JEventLoop *locEventLoop, string locOutputFileName) const
double measuredBeta(void) const
bool Get_BranchesCreatedFlag(void) const
static bool FCAL_VERBOSE_OUTPUT
map< const DReaction *, DCutAction_TrueCombo * > dCutActionMap_TrueCombo
const DVector3 & momentum(void) const
vector< Particle_t > Get_FinalPIDs(bool locIncludeMissingFlag=true, Charge_t locCharge=d_AllCharges, bool locIncludeDuplicatesFlag=true) const
void Create_Branches_ChargedHypotheses(DTreeBranchRegister &locTreeBranchRegister, bool locIsMCDataFlag) const
DTreeInterface * dThrownTreeInterface
void Get_DecayProductNames(const DReaction *locReaction, size_t locReactionStepIndex, TMap *locPositionToNameMap, TList *&locDecayProductNames, deque< size_t > &locSavedSteps) const
void Create_Branches_Thrown(DTreeBranchRegister &locTreeBranchRegister, bool locIsOnlyThrownFlag) const
unsigned int dInitNumTrackArraySize
const DReactionStep * Get_ReactionStep(size_t locStepIndex) const
void Group_ThrownParticles(const vector< const DMCThrown * > &locMCThrowns_FinalState, const vector< const DMCThrown * > &locMCThrowns_Decaying, vector< const DMCThrown * > &locMCThrownsToSave, map< const DMCThrown *, unsigned int > &locThrownIndexMap) const
int Get_DecayStepIndex(const DReaction *locReaction, size_t locStepIndex, size_t locParticleIndex)
const DKinFitResults * Get_KinFitResults(void) const
unsigned int dInitNumBeamArraySize
shared_ptr< const DBCALShowerMatchParams > Get_BCALShowerMatchParams(void) const
map< const DReaction *, DCutAction_BDTSignalCombo * > dCutActionMap_BDTSignalCombo
shared_ptr< const TMatrixFSym > errorMatrix(void) const
void Create_Branches_Combo(DTreeBranchRegister &locTreeBranchRegister, const DReaction *locReaction, bool locIsMCDataFlag, TMap *locPositionToNameMap) const
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const
size_t Get_NumReactionSteps(void) const
unsigned int Get_NDF(void) const
bool GetTargetZ(double &z_target) const
z-location of center of target
void Fill_ThrownTree(JEventLoop *locEventLoop) const
void Create_Branches_Beam(DTreeBranchRegister &locTreeBranchRegister, bool locIsMCDataFlag) const
void Fill_ComboNeutralData(DTreeFillData *locTreeFillData, unsigned int locComboIndex, string locParticleBranchName, const DNeutralParticleHypothesis *locMeasuredNeutralHypo, const DNeutralParticleHypothesis *locNeutralHypo, size_t locNeutralIndex, DKinFitType locKinFitType) const
Particle_t PID(void) const
const DMCThrown * Get_MatchingMCThrown(const DChargedTrackHypothesis *locChargedTrackHypothesis, double &locMatchFOM) const
string Build_BranchName(string locParticleBranchName, string locVariableName) const
virtual void Create_CustomBranches_ThrownTree(DTreeBranchRegister &locBranchRegister, JEventLoop *locEventLoop) const
void Fill_Single(string locBranchName, const DType &locData)