22 gPARMS->SetDefaultParameter(
"TRKFIT:HS_DEBUG_LEVEL",
HS_DEBUG_LEVEL);
52 vector<const DMCTrackHit*> mctrackhits;
53 loop->Get(mctrackhits);
58 for(
unsigned int i=0; i<cdchits_in.size(); i++){
62 if(mchit)cdchits_out.push_back(cdchits_in[i]);
85 vector<const DMCTrackHit*> mctrackhits;
86 loop->Get(mctrackhits);
91 for(
unsigned int i=0; i<fdchits_in.size(); i++){
95 if(mchit)fdchits_out.push_back(fdchits_in[i]);
107 vector<const DMCThrown*> throwns;
111 double min_chisq=1.0E8;
112 for(
unsigned int i=0; i<throwns.size(); i++){
116 if(mom.Mag()<1.0E-9)
continue;
120 double cos_phi = mom.Dot(mc_mom)/mom.Mag()/mc_mom.Mag();
121 if(cos_phi>1.)cos_phi=1.0;
122 if(cos_phi<-1.)cos_phi=-1.0;
124 double delta_pt = (mom.Pt()-mc_mom.Pt())/mc_mom.Pt();
125 double delta_theta = (mom.Theta() - mc_mom.Theta())*1000.0;
126 double delta_phi = acos(cos_phi)*1000.0;
127 double chisq = pow(delta_pt/0.04, 2.0) + pow(delta_theta/20.0, 2.0) + pow(delta_phi/20.0, 2.0);
129 if(chisq<min_chisq)myid = thrown->
myid;
154 double best_resi = 1.0E6;
155 double resi_min = 1.0E6, resiu_min=1.0E6;
156 for(
unsigned int j=0; j<mctrackhits.size(); j++){
158 if(mchit->
system!=sys)
continue;
159 if((trackno_filter>0) && (mchit->
track!=trackno_filter))
continue;
160 if((trackno_filter>0) && (!mchit->
primary))
continue;
164 double u = (pos_truth - wire->
origin).Dot(wire->
udir);
166 DVector3 pos_diff = pos_truth - pos_wire_truth;
167 double r = pos_diff.Mag();
174 double resi = rdrift - r;
179 double resiu = fabs(u) - wire->
L/2.0;
181 if(fabs(resi)<fabs(resi_min))resi_min=resi;
182 if(resiu<resiu_min)resiu_min=resiu;
184 if((fabs(resi)<0.3) && (resiu<4.0)){
188 if(fabs(resi)<fabs(best_resi)){
DTrackHitSelectorTHROWN(jana::JEventLoop *loop)
void GetFDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector< const DFDCPseudo * > &fdchits_in, vector< const DFDCPseudo * > &fdchits_out, int N=0) const
const DFDCWire * wire
DFDCWire for this wire.
class DFDCPseudo: definition for a reconstructed point in the FDC
static const DMCTrackHit * GetMCTrackHit(const DCoordinateSystem *wire, double rdrift, vector< const DMCTrackHit * > &mctrackhits, int trackno_filter=-1)
The DTrackHitSelector class is a base class for algorithms that will select hits from the drift chamb...
DetectorSystem_t system
particle type
float z
coordinates of hit in cm and rad
void GetCDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector< const DCDCTrackHit * > &cdchits_in, vector< const DCDCTrackHit * > &cdchits_out, int N=0) const
double time
time corresponding to this pseudopoint.
int primary
primary track=1 not primary track=0
const DVector3 & momentum(void) const
int FindTrackNumber(const DReferenceTrajectory *rt) const
virtual ~DTrackHitSelectorTHROWN()
int myid
id of this particle from original generator