21 fTree->Branch(
"mct_run",&
fRun,
"mct_run/i");
63 const std::vector<sim::MCTrack>& mctVec)
84 std::vector<double> y_vals;
85 std::vector<double> z_vals;
86 std::vector<double> x_vals;
87 std::vector<double> stepL_vals;
89 std::vector<double> mct_length(mctVec.size(),0);
91 for(
size_t i_p=0; i_p<mctVec.size(); i_p++){
100 for(
size_t i_s=1; i_s < mctVec[i_p].size(); i_s++){
102 TVector3
const& vec1 = mctVec[i_p][i_s-1].Position().Vect();
103 TVector3
const& vec2 = mctVec[i_p][i_s].Position().Vect();
104 double stepL = (vec2-vec1).Mag();
106 double thisy = 0.5*(vec1.Y() + vec2.Y());
107 double thisz = 0.5*(vec1.Z() + vec2.Z());
108 double thisx = 0.5*(vec1.X() + vec2.X());
110 y_vals.push_back(thisy);
111 z_vals.push_back(thisz);
112 x_vals.push_back(thisx);
113 stepL_vals.push_back(stepL);
115 mct_length[i_p] += stepL;
127 double totalL = std::accumulate(mct_length.begin(),mct_length.end(),0.0);
133 double sumy=0,sumz=0,sumx=0;
134 for(
size_t i_step=0; i_step<stepL_vals.size(); i_step++){
135 sumy += stepL_vals[i_step]*y_vals[i_step];
136 sumz += stepL_vals[i_step]*z_vals[i_step];
137 sumx += stepL_vals[i_step]*x_vals[i_step];
144 double sumy2=0,sumz2=0,sumx2=0;
145 for(
size_t i_step=0; i_step<stepL_vals.size(); i_step++){
160 size_t nsteps = mctrack.size();
simb::Origin_t Origin() const
void SetOutputTree(TTree *, bool fill=true)
unsigned int AncestorTrackID() const
void FillTree(unsigned int, unsigned int, const std::vector< sim::MCTrack > &)
int AncestorPdgCode() const
unsigned int MotherTrackID() const
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
Class def header for mctrack data container.
unsigned int fDParticleAncestorTrackId
int MotherPdgCode() const
int fDParticleAncestorPdgCode
unsigned int fDParticleMotherTrackId
int fDParticleMotherPdgCode
unsigned int TrackID() const
unsigned int fDParticleTrackId
void FillDominantParticleInfo(const sim::MCTrack &)
Event finding and building.