19 #include <JANA/JApplication.h>
20 #include <JANA/JFactory.h>
37 gPARMS->SetDefaultParameter(
"WRITE_EVIO_FILE", WRITE_EVIO_FILE );
40 gPARMS->SetDefaultParameter(
"WRITE_ROOT_TREE", WRITE_ROOT_TREE );
76 vector<const DAnalysisResults*> locAnalysisResultsVector;
77 loop->Get( locAnalysisResultsVector );
79 if( WRITE_EVIO_FILE ){
82 loop->GetSingle(eventWriterEVIO);
92 bool locSuccessFlag =
false;
93 for(
size_t loc_i = 0; loc_i < locAnalysisResultsVector.size(); ++loc_i) {
94 const DReaction* locReaction = locAnalysisResultsVector[loc_i]->Get_Reaction();
98 deque<const DParticleCombo*> locPassedParticleCombos;
99 locAnalysisResultsVector[loc_i]->Get_PassedParticleCombos(locPassedParticleCombos);
100 locSuccessFlag = !locPassedParticleCombos.empty();
104 if( (locAnalysisResultsVector.size() > 0) && locSuccessFlag) {
112 vector< const JObject* > locObjectsToSave;
114 vector<const DEventRFBunch*> locEventRFBunches;
115 loop->Get(locEventRFBunches);
117 locObjectsToSave.push_back(locEventRFBunches[0]);
119 vector<const DVertex*> kinfitVertex;
120 loop->Get(kinfitVertex);
121 locObjectsToSave.push_back(kinfitVertex[0]);
123 if(kinfitVertex.size() > 0) {
124 for(
auto result : locAnalysisResultsVector ) {
125 deque<const DParticleCombo*> combos;
126 result->Get_PassedParticleCombos(combos);
127 for(
auto combo : combos ) {
138 auto particles = combo->Get_FinalParticles_Measured(result->Get_Reaction());
139 for(
auto particle : particles ) {
143 if(find(locObjectsToSave.begin(),locObjectsToSave.end(),locNeutralShower->dBCALFCALShower) == locObjectsToSave.end())
144 locObjectsToSave.push_back(locNeutralShower->dBCALFCALShower);
156 eventWriterEVIO->
Write_EVIOEvent( loop,
"exclusivepi0", locObjectsToSave );
167 if( WRITE_ROOT_TREE ){
175 loop->GetSingle(eventWriterROOT);
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t init(void)
Called once at program start.
static int ParticleCharge(Particle_t p)
const DNeutralShower * Get_NeutralShower(void) const
~JEventProcessor_pi0calib()
jerror_t fini(void)
Called after last event of last event source has been processed.
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
string Get_ReactionName(void) const
JEventProcessor_pi0calib()
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
void Fill_DataTrees(JEventLoop *locEventLoop, string locDReactionTag) const
bool Write_EVIOEvent(JEventLoop *locEventLoop, string locOutputFileNameSubString) const