34 for (Long64_t jentry=0; jentry<
nentries;jentry++) {
37 Long64_t centry =
tree.LoadTree(jentry);
38 if (centry < 0)
return;
39 tree.GetEntry(jentry);
42 if( jentry%1000 == 0 ){
51 typedef std::map<int,std::vector<int> > TrackMap;
52 auto fillTrackMap = [](
const std::vector<int>& trkids, TrackMap& trackMap ){
53 for(
unsigned int i=0;
i<trkids.size();++
i){
54 trackMap[ trkids[
i] ].push_back(
i);
58 TrackMap track_seg_map;
61 TrackMap track_hough_map;
64 TrackMap track_hit_map;
67 TrackMap track_time_map;
70 TrackMap track_candidate_map;
75 TrackPlots* trackPlots =
nullptr;
87 for(
int ii=0;ii<3;++ii ){
106 unsigned int ntruth = 0;
107 unsigned int nseg = 0;
108 unsigned int nseg1 = 0;
109 unsigned int nseg2 = 0;
110 unsigned int nseg3 = 0;
111 unsigned int nhough = 0;
115 if(
pos != track_seg_map.end() ) {
116 nseg =
handleSegments(ntuple,
i,
pos->second,0, matchingStrategy, trackPlots->segments);
117 nseg1 =
handleSegments(ntuple,
i,
pos->second,1, matchingStrategy, trackPlots->segments1);
118 nseg2 =
handleSegments(ntuple,
i,
pos->second,2, matchingStrategy, trackPlots->segments2);
119 nseg3 =
handleSegments(ntuple,
i,
pos->second,3, matchingStrategy, trackPlots->segments3);
123 pos = track_hough_map.find(
i);
124 if(
pos != track_hough_map.end() ) {
125 nhough =
handleHough(ntuple,
i,
pos->second, matchingStrategy, trackPlots->hough);
129 pos = track_hit_map.find(
i);
130 if(
pos != track_hit_map.end() ) {
131 ntruth =
handleHits(ntuple,
i,
pos->second, matchingStrategy, trackPlots->hits);
135 pos = track_time_map.find(
i);
136 if(
pos != track_time_map.end() ) {
142 if( matchingStrategy ==
SameTrack || matchingStrategy ==
All ) {
144 trackPlots->fill(ntruth,nseg,nseg1,nseg2,nseg3,nhough);
146 pos = track_candidate_map.find(
i);
149 for(
unsigned int si=0;si<trackPlots->candidateStages.size();++si ){
150 StageSummaryPlots&
plots = trackPlots->candidateStages[si];
151 std::pair<unsigned int,unsigned int> candidateCounts(0,0);
153 if( candidateCounts.first == 0 ) {
154 plots.etaMissed->Fill(eta);
155 plots.etaBetaMissed->Fill(eta,betaTruth);
156 plots.betaMissed->Fill(betaTruth);
158 if( candidateCounts.second == 0 ) {
159 plots.etaMissedCombined->Fill(eta);
160 plots.betaMissedCombined->Fill(betaTruth);
162 plots.ncandidates->Fill(candidateCounts.first);
163 plots.ncombinedCandidates->Fill(candidateCounts.second);
166 if( nseg3 < 2 )
continue;
168 pos = track_time_map.find(
i);
169 if(
pos != track_time_map.end() ) {
171 BetaFitRegionPlots& betaRegionPlots =
isBarrel ? trackPlots->barrel : trackPlots->endcap;
174 for(
unsigned int co=0;co<2;++co ){
178 if( betaFitResult.status != 0 ) betaRegionPlots.mdt.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
183 if( betaFitResult.status != 0 ) betaRegionPlots.rpc.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
187 if( betaFitResult.status != 0 ) betaRegionPlots.rpct.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
191 if( betaFitResult.status != 0 ) betaRegionPlots.all.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
195 if( betaFitResult.status != 0 ) {
196 betaRegionPlots.allt.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
197 if( betaFitResult.ndof > 9 ) betaRegionPlots.allt_good.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
203 if( betaFitResult.status != 0 ) {
204 betaRegionPlots.mdtt.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );
205 if( betaFitResult.ndof > 9 ) betaRegionPlots.mdtt_good.fill( betaFitResult.beta, betaTruth, betaFitResult.chi2, betaFitResult.ndof );