16 #include <JANA/JApplication.h>
46 geant =
new TTree(
"geant",
"GEANT swimmer");
47 dana =
new TTree(
"dana",
"DANA swimmer");
48 geant->Branch(
"e", &geant_event,
"event/I:s/F:x:y:z:P:dP:mech/I");
49 dana->Branch(
"e", &dana_event,
"event/I:s/F:x:y:z:P:dP");
51 geant->SetMarkerColor(kRed);
52 dana->SetMarkerColor(kBlue);
54 geant->SetMarkerStyle(8);
55 dana->SetMarkerStyle(8);
56 dana->SetMarkerSize(0.5);
74 vector<const DMCTrajectoryPoint*> mctrajs;
75 vector<const DChargedTrack*> tracks;
79 if(tracks.size()!=1 || tracks[0]->hypotheses.size()<1){
80 _DBG_<<
"tracks.size()="<<tracks.size();
81 if(tracks.size()>0)cerr<<
" tracks[0]->hypotheses.size()="<<tracks[0]->hypotheses.size();
87 japp->RootWriteLock();
91 for(
int i=0; i<tracks[0]->hypotheses[0]->rt->Nswim_steps; i++, step++){
92 dana_event.event = eventnumber;
93 dana_event.s = step->
s;
94 dana_event.x = step->
origin.X();
95 dana_event.y = step->
origin.Y();
96 dana_event.z = step->
origin.Z();
97 dana_event.P = step->
mom.Mag();
98 dana_event.dP = step->dP;
104 for(
unsigned int i=0; i<mctrajs.size(); i++){
106 geant_event.event = eventnumber;
107 geant_event.s += traj->
step;
108 geant_event.x = traj->
x;
109 geant_event.y = traj->
y;
110 geant_event.z = traj->
z;
111 geant_event.P =
sqrt(traj->
px*traj->
px + traj->
py*traj->
py + traj->
pz*traj->
pz);
114 float P = geant_event.P;
115 float m =
sqrt(E*E - P*P);
116 float P1 =
sqrt((E-dE)*(E-dE) - m*m);
117 geant_event.dP = P-P1;
118 geant_event.mech = traj->
mech;
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
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.
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.