17 #include <JANA/JApplication.h>
18 #include <JANA/JCalibration.h>
37 gPARMS->SetDefaultParameter(
"TRKFIND:COSMICS",COSMICS);
40 gPARMS->SetDefaultParameter(
"TRKFIT:CHI2CUT",CHI2CUT);
43 gPARMS->SetDefaultParameter(
"TRKFIT:DO_PRUNING",DO_PRUNING);
46 gPARMS->SetDefaultParameter(
"TRKFIND:DEBUG_HISTS",DEBUG_HISTS);
49 USE_FDC_DRIFT_TIMES=
true;
50 gPARMS->SetDefaultParameter(
"TRKFIT:USE_FDC_DRIFT_TIMES",
54 gPARMS->SetDefaultParameter(
"TRKFIT:PLANE_TO_SKIP",PLANE_TO_SKIP);
57 gPARMS->SetDefaultParameter(
"TRKFIT:SKIP_CDC",SKIP_CDC);
60 gPARMS->SetDefaultParameter(
"TRKFIT:SKIP_FDC",SKIP_FDC);
63 vector<const DTrackFinder *> finders;
67 _DBG_<<
"Unable to get a DTrackFinder object!"<<endl;
68 return RESOURCE_UNAVAILABLE;
75 Hvres=(TH2F *)gROOT->FindObject(
"Hvres");
76 if (!Hvres) Hvres=
new TH2F(
"Hvres",
"Residual along wire",100,-0.25,0.25,24,0.5,24.5);
77 hFDCOccTrkFind=
new TH1I(
"Occ form track finding",
"Occ per plane", 24,0.5,24.5);
78 hFDCOccTrkFit=
new TH1I(
"Occ form track fitting",
"Occ per plane", 24,0.5,24.5);
79 hFDCOccTrkSmooth=
new TH1I(
"Occ form track smoothing",
"Occ per plane", 24,0.5,24.5);
83 dResourcePool_TMatrixFSym = std::make_shared<DResourcePool<TMatrixFSym>>();
84 dResourcePool_TMatrixFSym->Set_ControlParams(20, 20, 50);
98 vector<const DCDCTrackHit*>cdcs;
99 vector<const DFDCPseudo*>pseudos;
103 set<unsigned int> used_cdc;
107 if (pseudos.size()>4){
108 for (
size_t i=0;i<pseudos.size();i++) finder->AddHit(pseudos[i]);
109 finder->FindFDCSegments();
110 finder->LinkFDCSegments();
113 const vector<DTrackFinder::fdc_segment_t>tracks=finder->GetFDCTracks();
114 for (
size_t i=0;i<tracks.size();i++){
120 vector<const DFDCPseudo *>hits=tracks[i].hits;
121 for (
unsigned int k=0;k<hits.size();k++){
122 cand->AddAssociatedObject(hits[k]);
124 hFDCOccTrkFind->Fill(hits[k]->wire->layer);
129 double tx=tracks[i].S(state_tx),ty=tracks[i].S(state_ty);
130 double phi=atan2(ty,tx);
131 double tanl=1./
sqrt(tx*tx+ty*ty);
132 double pt=5.0*cos(atan(tanl));
136 finder->FindDoca(0,tracks[i].
S,dir,origin,&pos);
139 _data.push_back(cand);
147 for (
size_t i=0;i<cdcs.size();i++) {
149 if(used_cdc.find(i) == used_cdc.end()) finder->AddHit(cdcs[i]);
151 finder->FindAxialSegments();
152 finder->LinkCDCSegments();
155 const vector<DTrackFinder::cdc_track_t>tracks=finder->GetCDCTracks();
156 for (
size_t i=0;i<tracks.size();i++){
163 vector<const DCDCTrackHit *>hits=tracks[i].axial_hits;
164 for (
unsigned int k=0;k<hits.size();k++){
165 cand->AddAssociatedObject(hits[k]);
167 hits=tracks[i].stereo_hits;
168 for (
unsigned int k=0;k<hits.size();k++){
169 cand->AddAssociatedObject(hits[k]);
172 double z=tracks[i].z;
175 double tx=tracks[i].S(state_tx),ty=tracks[i].S(state_ty);
176 double phi=atan2(ty,tx);
177 double tanl=1./
sqrt(tx*tx+ty*ty);
179 double phi_diff=phi-hits[0]->wire->origin.Phi()-M_PI;
180 if (phi_diff<-M_PI) phi_diff+=2.*M_PI;
181 if (phi_diff> M_PI) phi_diff-=2.*M_PI;
182 if (fabs(phi_diff)<M_PI_2){
186 double pt=5.*cos(atan(tanl));
191 finder->FindDoca(z,tracks[i].S,dir,origin,&pos);
196 tracks[i].
S(state_y),z));
199 _data.push_back(cand);
205 for(
size_t loc_i = 0; loc_i < _data.size(); ++loc_i)
207 vector<const DCDCTrackHit*> locCDCTrackHits;
208 _data[loc_i]->Get(locCDCTrackHits);
210 vector<const DFDCPseudo*> locFDCPseudos;
211 _data[loc_i]->Get(locFDCPseudos);
213 _data[loc_i]->dCDCRings = dParticleID->Get_CDCRingBitPattern(locCDCTrackHits);
214 _data[loc_i]->dFDCPlanes = dParticleID->Get_FDCPlaneBitPattern(locFDCPseudos);
void setMomentum(const DVector3 &aMomentum)
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
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.
jerror_t fini(void)
Called after last event of last event source has been processed.
<A href="index.html#legend"> <IMG src="CORE.png" width="100"> </A>
void setPID(Particle_t locPID)
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
void setPosition(const DVector3 &aPosition)