8 #include <TDirectory.h>
53 file =
new TFile(
out.c_str(),
"recreate");
54 for (
int i=0;
i!=6;
i++)
55 for (
int j=0;
j!=9;
j++){
56 if (
i==0 &&
j>2)
break;
57 if (
i==1 &&
j>1)
break;
58 if (
i==2 &&
j>3)
break;
59 if (
i==3 &&
j>2)
break;
60 if (
i==4 &&
j>5)
break;
61 if (
i==5 &&
j>8)
break;
64 title <<
"Chi2Increment_" <<
i+1 <<
"-" <<
j+1 ;
67 title <<
"Chi2IncrementVsEta_" <<
i+1 <<
"-" << j+1 ;
70 title <<
"Chi2GoodHit_" <<
i+1 <<
"-" << j+1 ;
73 title <<
"Chi2BadHit_" <<
i+1 <<
"-" << j+1 ;
76 title <<
"Chi2DeltaHit_" <<
i+1 <<
"-" << j+1 ;
79 title <<
"Chi2NSharedHit_" <<
i+1 <<
"-" << j+1 ;
82 title <<
"Chi2SharedHit_" <<
i+1 <<
"-" << j+1 ;
86 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts";
89 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts";
92 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts";
96 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts";
99 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts";
102 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts";
106 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr";
109 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr";
112 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr";
116 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs";
119 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs";
122 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs";
125 if ( ((
i==2||
i==4)&&(j==0||j==1)) || (
i==3||
i==5) ){
128 title <<
"Chi2Increment_mono_" <<
i+1 <<
"-" << j+1 ;
132 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
135 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
138 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
142 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
145 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
148 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
152 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
155 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
158 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
162 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
165 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
168 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
173 title <<
"Chi2Increment_stereo_" <<
i+1 <<
"-" << j+1 ;
177 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
180 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
183 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
187 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
190 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
193 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
197 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
200 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
203 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
207 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
210 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
213 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
218 hTotChi2GoodHit =
new TH1F(
"TotChi2GoodHit",
"TotChi2GoodHit",1000,0,100);
219 hTotChi2BadHit =
new TH1F(
"TotChi2BadHit",
"TotChi2BadHit",1000,0,100);
220 hTotChi2DeltaHit =
new TH1F(
"TotChi2DeltaHit",
"TotChi2DeltaHit",1000,0,100);
223 hProcess_vs_Chi2 =
new TH2F(
"Process_vs_Chi2",
"Process_vs_Chi2",1000,0,100,17,-0.5,16.5);
224 hClsize_vs_Chi2 =
new TH2F(
"Clsize_vs_Chi2",
"Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
225 hPixClsize_vs_Chi2=
new TH2F(
"PixClsize_vs_Chi2",
"PixClsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
226 hPrjClsize_vs_Chi2=
new TH2F(
"PrjClsize_vs_Chi2",
"PrjClsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
227 hSt1Clsize_vs_Chi2=
new TH2F(
"St1Clsize_vs_Chi2",
"St1Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
228 hSt2Clsize_vs_Chi2=
new TH2F(
"St2Clsize_vs_Chi2",
"St2Clsize_vs_Chi2",1000,0,100,17,-0.5,16.5);
229 hGoodHit_vs_Chi2 =
new TH2F(
"GoodHit_vs_Chi2",
"GoodHit_vs_Chi2",10000,0,1000,2,-0.5,1.5);
230 hClusterSize =
new TH1F(
"ClusterSize",
"ClusterSize",40,-0.5,39.5);
231 hPixClusterSize =
new TH1F(
"PixClusterSize",
"PixClusterSize",40,-0.5,39.5);
232 hPrjClusterSize =
new TH1F(
"PrjClusterSize",
"PrjClusterSize",40,-0.5,39.5);
233 hSt1ClusterSize =
new TH1F(
"St1ClusterSize",
"St1ClusterSize",40,-0.5,39.5);
234 hSt2ClusterSize =
new TH1F(
"St2ClusterSize",
"St2ClusterSize",40,-0.5,39.5);
235 hSimHitVecSize =
new TH1F(
"hSimHitVecSize",
"hSimHitVecSize",40,-0.5,39.5);
236 hPixSimHitVecSize =
new TH1F(
"PixSimHitVecSize",
"PixSimHitVecSize",40,-0.5,39.5);
237 hPrjSimHitVecSize =
new TH1F(
"PrjSimHitVecSize",
"PrjSimHitVecSize",40,-0.5,39.5);
238 hSt1SimHitVecSize =
new TH1F(
"St1SimHitVecSize",
"St1SimHitVecSize",40,-0.5,39.5);
239 hSt2SimHitVecSize =
new TH1F(
"St2SimHitVecSize",
"St2SimHitVecSize",40,-0.5,39.5);
240 goodbadmerged =
new TH1F(
"goodbadmerged",
"goodbadmerged",5,0.5,5.5);
241 energyLossRatio =
new TH1F(
"energyLossRatio",
"energyLossRatio",100,0,1);
242 mergedPull =
new TH1F(
"mergedPull",
"mergedPull",200,0,20);
243 probXgood =
new TH1F(
"probXgood",
"probXgood",110,0,1.1);
244 probXbad =
new TH1F(
"probXbad",
"probXbad",110,0,1.1);
245 probXdelta =
new TH1F(
"probXdelta",
"probXdelta",110,0,1.1);
246 probXshared =
new TH1F(
"probXshared",
"probXshared",110,0,1.1);
247 probXnoshare =
new TH1F(
"probXnoshare",
"probXnoshare",110,0,1.1);
248 probYgood =
new TH1F(
"probYgood",
"probYgood",110,0,1.1);
249 probYbad =
new TH1F(
"probYbad",
"probYbad",110,0,1.1);
250 probYdelta =
new TH1F(
"probYdelta",
"probYdelta",110,0,1.1);
251 probYshared =
new TH1F(
"probYshared",
"probYshared",110,0,1.1);
252 probYnoshare =
new TH1F(
"probYnoshare",
"probYnoshare",110,0,1.1);
257 LogDebug(
"TestTrackHits") <<
"new event" ;
263 iEvent.
getByLabel(
"offlineBeamSpot",beamSpot);
282 LogTrace(
"TestTrackHits") <<
"\n*****************new trajectory********************" ;
285 std::vector<TrajectoryMeasurement> tmColl = it->measurements();
296 std::vector<std::pair<TrackingParticleRef, double> > tP;
297 if(recSimColl.
find(track) != recSimColl.
end()){
298 tP = recSimColl[track];
300 edm::LogVerbatim(
"TestTrackHits") <<
"reco::Track #" << ++yyy <<
" with pt=" << track->
pt()
301 <<
" associated with quality:" << tP.begin()->second <<
" good track #" << ++yy <<
" has hits:" << track->
numberOfValidHits() <<
"\n";
304 edm::LogVerbatim(
"TestTrackHits") <<
"reco::Track #" << ++yyy <<
" with pt=" << track->
pt()
305 <<
" NOT associated to any TrackingParticle" <<
"\n";
320 LogTrace(
"TestTrackHits") <<
"a tp is associated with fraction=" << tP.begin()->second;
322 std::vector<unsigned int> tpids;
324 LogTrace(
"TestTrackHits") <<
"tp id=" << g4T->trackId();
325 tpids.push_back(g4T->trackId());
330 for (std::vector<TrajectoryMeasurement>::iterator tm=tmColl.begin();tm!=tmColl.end();++tm){
332 tchi2+=tm->estimate();
334 LogTrace(
"TestTrackHits") <<
"+++++++++++++++++new hit+++++++++++++++++" ;
335 CTTRHp rhit = tm->recHit();
338 TSOS state =
combiner(tm->backwardPredictedState(), tm->forwardPredictedState());
340 if (rhit->isValid()==0 && rhit->det()!=0)
continue;
344 int subdetId = rhit->det()->geographicalId().subdetId();
346 DetId id = rhit->det()->geographicalId();
347 if (
id.subdetId()==3) layerId = ((
TIBDetId)(
id)).layer();
348 if (
id.subdetId()==5) layerId = ((
TOBDetId)(
id)).layer();
349 if (
id.subdetId()==1) layerId = ((
PXBDetId)(
id)).layer();
350 if (
id.subdetId()==4) layerId = ((
TIDDetId)(
id)).wheel();
351 if (
id.subdetId()==6) layerId = ((
TECDetId)(
id)).wheel();
352 if (
id.subdetId()==2) layerId = ((
PXFDetId)(
id)).disk();
353 LogTrace(
"TestTrackHits") <<
"subdetId=" << subdetId <<
" layerId=" << layerId ;
355 const Surface * surf = rhit->surface();
356 if (surf==0)
continue;
358 double energyLoss_ = 0.;
359 unsigned int monoId = 0;
360 std::vector<double> energyLossM;
361 std::vector<double> energyLossS;
363 unsigned int simhitvecsize = assSimHits.size();
364 if (simhitvecsize==0)
continue;
366 std::vector<unsigned int> trackIds;
369 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
370 unsigned int tId =
m->trackId();
371 if (
find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
372 if (
m->energyLoss()>energyLoss_) {
374 energyLoss_ =
m->energyLoss();
376 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
377 if (monoId==0) monoId =
m->detUnitId();
378 if (monoId ==
m->detUnitId()){
379 energyLossM.push_back(
m->energyLoss());
382 energyLossS.push_back(
m->energyLoss());
386 energyLossM.push_back(
m->energyLoss());
403 double chi2increment = tm->estimate();
404 LogTrace(
"TestTrackHits") <<
"tm->estimate()=" << tm->estimate();
406 title <<
"Chi2Increment_" << subdetId <<
"-" << layerId;
409 title <<
"Chi2IncrementVsEta_" << subdetId <<
"-" << layerId;
415 bool mergedhit =
false;
416 if (dynamic_cast<const SiPixelRecHit*>(rhit->hit())){
417 clustersize = ((
const SiPixelRecHit*)(rhit->hit()))->cluster()->size() ;
421 if (simhitvecsize>1) mergedhit =
true;
423 else if (dynamic_cast<const SiStripRecHit2D*>(rhit->hit())){
424 clustersize = ((
const SiStripRecHit2D*)(rhit->hit()))->cluster()->amplitudes().size() ;
428 if (simhitvecsize>1) mergedhit =
true;
430 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())){
431 int clsize1 = ((
const SiStripMatchedRecHit2D*)(rhit->hit()))->monoCluster().amplitudes().size();
432 int clsize2 = ((
const SiStripMatchedRecHit2D*)(rhit->hit()))->stereoCluster().amplitudes().size();
433 if (clsize1>clsize2) clustersize = clsize1;
434 else clustersize = clsize2;
438 if (simhitvecsize>2) mergedhit =
true;
440 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(rhit->hit())){
445 if (simhitvecsize>1) mergedhit =
true;
457 bool goodhit =
false;
458 for(
size_t j=0;
j<simTrackIds.size();
j++){
459 LogTrace(
"TestTrackHits") <<
"hit id=" << simTrackIds[
j].first;
460 for (
size_t jj=0;
jj<tpids.size();
jj++){
461 if (simTrackIds[
j].
first == tpids[
jj]) goodhit =
true;
466 bool ioniOnly =
true;
469 if (energyLossM.size()>1&&energyLossS.size()<=1) {
470 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
473 else if (energyLossS.size()>1&&energyLossM.size()<=1) {
474 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
477 else if (energyLossS.size()>1&&energyLossM.size()>1) {
478 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
479 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
480 energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0]
486 LogVerbatim(
"TestTrackHits") <<
"MERGED HIT" << std::endl;
487 unsigned int idc = 0;
488 for (
size_t jj=0;
jj<tpids.size();
jj++){
489 idc +=
std::count(trackIds.begin(),trackIds.end(),tpids[
jj]);
491 if (idc==trackIds.size()) {
494 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin()+1;
m<assSimHits.end();
m++){
495 if ((
m->processType()!=7&&
m->processType()!=8&&
m->processType()!=9)&&
abs(
m->particleType())!=11){
500 if (ioniOnly&&!shared) {
502 title <<
"Chi2DeltaHit_" << subdetId <<
"-" << layerId;
509 }
else if(!ioniOnly&&!shared) {
511 title <<
"Chi2NSharedHit_" << subdetId <<
"-" << layerId;
520 title <<
"Chi2SharedHit_" << subdetId <<
"-" << layerId;
529 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++) {
530 unsigned int tId =
m->trackId();
531 LogVerbatim(
"TestTrackHits") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss() <<
" pType=" <<
m->processType();
532 if (
find(tpids.begin(),tpids.end(),tId)==tpids.end())
continue;
533 if (
m->processType()==2) {
537 LogVerbatim(
"TestTrackHits") << gpr <<
" " << gps <<
" " << ger;
538 ROOT::Math::SVector<double,3>
delta;
539 delta[0]=gpr.
x()-gps.
x();
540 delta[1]=gpr.
y()-gps.
y();
541 delta[2]=gpr.
z()-gps.
z();
542 LogVerbatim(
"TestTrackHits") << delta <<
" " << ger ;
543 double mpull =
sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
544 LogVerbatim(
"TestTrackHits") <<
"hit pull=" << mpull;
552 title <<
"Chi2GoodHit_" << subdetId <<
"-" << layerId;
563 title <<
"Chi2BadHit_" << subdetId <<
"-" << layerId;
568 probXbad->Fill(pix->probabilityX());
569 probYbad->Fill(pix->probabilityY());
576 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
577 if (simhitvecsize>2 && goodhit) {
583 double rechitmatchedx = rhit->localPosition().x();
584 double rechitmatchedy = rhit->localPosition().y();
585 double mindist = 999999;
587 std::pair<LocalPoint,LocalVector> closestPair;
589 const BoundPlane& plane = (rhit)->det()->surface();
590 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
592 std::pair<LocalPoint,LocalVector> hitPair =
projectHit((*
m),stripDet,plane);
593 distx = fabs(rechitmatchedx - hitPair.first.x());
594 disty = fabs(rechitmatchedy - hitPair.first.y());
595 double dist = distx*distx+disty*disty;
596 if(
sqrt(dist)<mindist){
598 closestPair = hitPair;
601 shitLPos = closestPair.first;
602 shitLMom = closestPair.second;
604 if (simhitvecsize>1 && goodhit) {
622 GlobalError rhitGPEr = (rhit)->globalPositionError();
624 LogVerbatim(
"TestTrackHits") <<
"assSimHits.size()=" << assSimHits.size() ;
625 LogVerbatim(
"TestTrackHits") <<
"tsos globalPos =" << tsosGPos ;
626 LogVerbatim(
"TestTrackHits") <<
"sim hit globalPos=" << shitGPos ;
627 LogVerbatim(
"TestTrackHits") <<
"rec hit globalPos=" << rhitGPos ;
628 LogVerbatim(
"TestTrackHits") <<
"geographicalId =" << rhit->det()->geographicalId().rawId() ;
632 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->geographicalId()="
633 << rhit->detUnit()->geographicalId().rawId() ;
634 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().position()="
635 << rhit->det()->surface().position() ;
636 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().position()="
637 << rhit->detUnit()->surface().position() ;
638 LogTrace(
"TestTrackHits") <<
"rhit->det()->position()=" << rhit->det()->position() ;
639 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->position()="
640 << rhit->detUnit()->position() ;
641 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().length()="
642 << rhit->det()->surface().bounds().length() ;
643 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().length()="
644 << rhit->detUnit()->surface().bounds().length() ;
645 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().width()="
646 << rhit->det()->surface().bounds().width() ;
647 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().width()="
648 << rhit->detUnit()->surface().bounds().width() ;
649 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().thickness()="
650 << rhit->det()->surface().bounds().thickness() ;
651 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().thickness()="
652 << rhit->detUnit()->surface().bounds().thickness() ;
655 double pullGPX_rs = (rhitGPos.
x()-shitGPos.
x())/
sqrt(rhitGPEr.
cxx());
656 double pullGPY_rs = (rhitGPos.
y()-shitGPos.
y())/
sqrt(rhitGPEr.
cyy());
657 double pullGPZ_rs = (rhitGPos.
z()-shitGPos.
z())/
sqrt(rhitGPEr.
czz());
665 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs";
668 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs";
671 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs";
674 double pullGPX_tr = (tsosGPos.
x()-rhitGPos.
x())/
sqrt(tsosGPEr.
cxx()+rhitGPEr.
cxx());
675 double pullGPY_tr = (tsosGPos.
y()-rhitGPos.
y())/
sqrt(tsosGPEr.
cyy()+rhitGPEr.
cyy());
676 double pullGPZ_tr = (tsosGPos.
z()-rhitGPos.
z())/
sqrt(tsosGPEr.
czz()+rhitGPEr.
czz());
684 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr";
687 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr";
690 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr";
693 double pullGPX_ts = (tsosGPos.
x()-shitGPos.
x())/
sqrt(tsosGPEr.
cxx());
694 double pullGPY_ts = (tsosGPos.
y()-shitGPos.
y())/
sqrt(tsosGPEr.
cyy());
695 double pullGPZ_ts = (tsosGPos.
z()-shitGPos.
z())/
sqrt(tsosGPEr.
czz());
700 LogTrace(
"TestTrackHits") <<
"ts1" ;
703 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts";
706 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts";
709 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts";
712 double pullGMX_ts = (tsosGMom.
x()-shitGMom.
x())/
sqrt(tsosGMEr.
cxx());
713 double pullGMY_ts = (tsosGMom.
y()-shitGMom.
y())/
sqrt(tsosGMEr.
cyy());
714 double pullGMZ_ts = (tsosGMom.
z()-shitGMom.
z())/
sqrt(tsosGMEr.
czz());
719 LogTrace(
"TestTrackHits") <<
"ts2" ;
722 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts";
725 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts";
728 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts";
730 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
733 LogTrace(
"TestTrackHits") <<
"MONO HIT" ;
734 auto m =
dynamic_cast<const SiStripMatchedRecHit2D*
>(rhit->hit())->monoHit();
736 if (tMonoHit==0)
continue;
738 if (assMonoSimHits.size()==0)
continue;
739 const PSimHit sMonoHit = *(assMonoSimHits.begin());
740 const Surface * monoSurf = &( tMonoHit->det()->surface() );
741 if (monoSurf==0)
continue;
742 TSOS monoState = thePropagatorAnyDir->
propagate(state,*monoSurf);
743 if (monoState.
isValid()==0)
continue;
758 GlobalPoint monoRhitGPos = tMonoHit->globalPosition();
759 GlobalError monoRhitGPEr = tMonoHit->globalPositionError();
761 double pullGPX_rs_mono = (monoRhitGPos.
x()-monoShitGPos.
x())/
sqrt(monoRhitGPEr.
cxx());
762 double pullGPY_rs_mono = (monoRhitGPos.
y()-monoShitGPos.
y())/
sqrt(monoRhitGPEr.
cyy());
763 double pullGPZ_rs_mono = (monoRhitGPos.
z()-monoShitGPos.
z())/
sqrt(monoRhitGPEr.
czz());
772 title <<
"Chi2Increment_mono_" << subdetId <<
"-" << layerId ;
776 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs_mono";
779 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs_mono";
782 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs_mono";
785 double pullGPX_tr_mono = (monoTsosGPos.
x()-monoRhitGPos.
x())/
sqrt(monoTsosGPEr.
cxx()+monoRhitGPEr.
cxx());
786 double pullGPY_tr_mono = (monoTsosGPos.
y()-monoRhitGPos.
y())/
sqrt(monoTsosGPEr.
cyy()+monoRhitGPEr.
cyy());
787 double pullGPZ_tr_mono = (monoTsosGPos.
z()-monoRhitGPos.
z())/
sqrt(monoTsosGPEr.
czz()+monoRhitGPEr.
czz());
793 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr_mono";
796 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr_mono";
799 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr_mono";
802 double pullGPX_ts_mono = (monoTsosGPos.
x()-monoShitGPos.
x())/
sqrt(monoTsosGPEr.
cxx());
803 double pullGPY_ts_mono = (monoTsosGPos.
y()-monoShitGPos.
y())/
sqrt(monoTsosGPEr.
cyy());
804 double pullGPZ_ts_mono = (monoTsosGPos.
z()-monoShitGPos.
z())/
sqrt(monoTsosGPEr.
czz());
810 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts_mono";
813 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts_mono";
816 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts_mono";
819 double pullGMX_ts_mono = (monoTsosGMom.
x()-monoShitGMom.
x())/
sqrt(monoTsosGMEr.
cxx());
820 double pullGMY_ts_mono = (monoTsosGMom.
y()-monoShitGMom.
y())/
sqrt(monoTsosGMEr.
cyy());
821 double pullGMZ_ts_mono = (monoTsosGMom.
z()-monoShitGMom.
z())/
sqrt(monoTsosGMEr.
czz());
827 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts_mono";
830 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts_mono";
833 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts_mono";
837 LogTrace(
"TestTrackHits") <<
"STEREO HIT" ;
838 auto s =
dynamic_cast<const SiStripMatchedRecHit2D*
>(rhit->hit())->stereoHit();
840 if (tStereoHit==0)
continue;
842 if (assStereoSimHits.size()==0)
continue;
843 const PSimHit sStereoHit = *(assStereoSimHits.begin());
844 const Surface * stereoSurf = &( tStereoHit->det()->surface() );
845 if (stereoSurf==0)
continue;
846 TSOS stereoState = thePropagatorAnyDir->
propagate(state,*stereoSurf);
847 if (stereoState.
isValid()==0)
continue;
862 GlobalPoint stereoRhitGPos = tStereoHit->globalPosition();
863 GlobalError stereoRhitGPEr = tStereoHit->globalPositionError();
869 title <<
"Chi2Increment_stereo_" << subdetId <<
"-" << layerId ;
872 double pullGPX_rs_stereo = (stereoRhitGPos.
x()-stereoShitGPos.
x())/
sqrt(stereoRhitGPEr.
cxx());
873 double pullGPY_rs_stereo = (stereoRhitGPos.
y()-stereoShitGPos.
y())/
sqrt(stereoRhitGPEr.
cyy());
874 double pullGPZ_rs_stereo = (stereoRhitGPos.
z()-stereoShitGPos.
z())/
sqrt(stereoRhitGPEr.
czz());
880 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
883 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
886 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
889 double pullGPX_tr_stereo = (stereoTsosGPos.
x()-stereoRhitGPos.
x())/
sqrt(stereoTsosGPEr.
cxx()+stereoRhitGPEr.
cxx());
890 double pullGPY_tr_stereo = (stereoTsosGPos.
y()-stereoRhitGPos.
y())/
sqrt(stereoTsosGPEr.
cyy()+stereoRhitGPEr.
cyy());
891 double pullGPZ_tr_stereo = (stereoTsosGPos.
z()-stereoRhitGPos.
z())/
sqrt(stereoTsosGPEr.
czz()+stereoRhitGPEr.
czz());
897 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
900 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
903 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
906 double pullGPX_ts_stereo = (stereoTsosGPos.
x()-stereoShitGPos.
x())/
sqrt(stereoTsosGPEr.
cxx());
907 double pullGPY_ts_stereo = (stereoTsosGPos.
y()-stereoShitGPos.
y())/
sqrt(stereoTsosGPEr.
cyy());
908 double pullGPZ_ts_stereo = (stereoTsosGPos.
z()-stereoShitGPos.
z())/
sqrt(stereoTsosGPEr.
czz());
914 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
917 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
920 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
923 double pullGMX_ts_stereo = (stereoTsosGMom.
x()-stereoShitGMom.
x())/
sqrt(stereoTsosGMEr.
cxx());
924 double pullGMY_ts_stereo = (stereoTsosGMom.
y()-stereoShitGMom.
y())/
sqrt(stereoTsosGMEr.
cyy());
925 double pullGMZ_ts_stereo = (stereoTsosGMom.
z()-stereoShitGMom.
z())/
sqrt(stereoTsosGMEr.
czz());
931 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
934 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
937 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
941 LogTrace(
"TestTrackHits") <<
"traj chi2=" << tchi2 ;
942 LogTrace(
"TestTrackHits") <<
"track chi2=" << track->
chi2() ;
945 LogTrace(
"TestTrackHits") <<
"end of event: processd hits=" << evtHits ;
951 TDirectory * chi2d =
file->mkdir(
"Chi2Increment");
953 TDirectory * gp_ts =
file->mkdir(
"GP_TSOS-SimHit");
954 TDirectory * gm_ts =
file->mkdir(
"GM_TSOS-SimHit");
955 TDirectory * gp_tr =
file->mkdir(
"GP_TSOS-RecHit");
956 TDirectory * gp_rs =
file->mkdir(
"GP_RecHit-SimHit");
958 TDirectory * gp_tsx = gp_ts->mkdir(
"X");
959 TDirectory * gp_tsy = gp_ts->mkdir(
"Y");
960 TDirectory * gp_tsz = gp_ts->mkdir(
"Z");
961 TDirectory * gm_tsx = gm_ts->mkdir(
"X");
962 TDirectory * gm_tsy = gm_ts->mkdir(
"Y");
963 TDirectory * gm_tsz = gm_ts->mkdir(
"Z");
964 TDirectory * gp_trx = gp_tr->mkdir(
"X");
965 TDirectory * gp_try = gp_tr->mkdir(
"Y");
966 TDirectory * gp_trz = gp_tr->mkdir(
"Z");
967 TDirectory * gp_rsx = gp_rs->mkdir(
"X");
968 TDirectory * gp_rsy = gp_rs->mkdir(
"Y");
969 TDirectory * gp_rsz = gp_rs->mkdir(
"Z");
971 TDirectory * gp_tsx_mono = gp_ts->mkdir(
"MONOX");
972 TDirectory * gp_tsy_mono = gp_ts->mkdir(
"MONOY");
973 TDirectory * gp_tsz_mono = gp_ts->mkdir(
"MONOZ");
974 TDirectory * gm_tsx_mono = gm_ts->mkdir(
"MONOX");
975 TDirectory * gm_tsy_mono = gm_ts->mkdir(
"MONOY");
976 TDirectory * gm_tsz_mono = gm_ts->mkdir(
"MONOZ");
977 TDirectory * gp_trx_mono = gp_tr->mkdir(
"MONOX");
978 TDirectory * gp_try_mono = gp_tr->mkdir(
"MONOY");
979 TDirectory * gp_trz_mono = gp_tr->mkdir(
"MONOZ");
980 TDirectory * gp_rsx_mono = gp_rs->mkdir(
"MONOX");
981 TDirectory * gp_rsy_mono = gp_rs->mkdir(
"MONOY");
982 TDirectory * gp_rsz_mono = gp_rs->mkdir(
"MONOZ");
984 TDirectory * gp_tsx_stereo = gp_ts->mkdir(
"STEREOX");
985 TDirectory * gp_tsy_stereo = gp_ts->mkdir(
"STEREOY");
986 TDirectory * gp_tsz_stereo = gp_ts->mkdir(
"STEREOZ");
987 TDirectory * gm_tsx_stereo = gm_ts->mkdir(
"STEREOX");
988 TDirectory * gm_tsy_stereo = gm_ts->mkdir(
"STEREOY");
989 TDirectory * gm_tsz_stereo = gm_ts->mkdir(
"STEREOZ");
990 TDirectory * gp_trx_stereo = gp_tr->mkdir(
"STEREOX");
991 TDirectory * gp_try_stereo = gp_tr->mkdir(
"STEREOY");
992 TDirectory * gp_trz_stereo = gp_tr->mkdir(
"STEREOZ");
993 TDirectory * gp_rsx_stereo = gp_rs->mkdir(
"STEREOX");
994 TDirectory * gp_rsy_stereo = gp_rs->mkdir(
"STEREOY");
995 TDirectory * gp_rsz_stereo = gp_rs->mkdir(
"STEREOZ");
1034 for (
int i=0;
i!=6;
i++)
1035 for (
int j=0;
j!=9;
j++){
1036 if (
i==0 &&
j>2)
break;
1037 if (
i==1 &&
j>1)
break;
1038 if (
i==2 &&
j>3)
break;
1039 if (
i==3 &&
j>2)
break;
1040 if (
i==4 &&
j>5)
break;
1041 if (
i==5 &&
j>8)
break;
1044 title <<
"Chi2Increment_" <<
i+1 <<
"-" <<
j+1 ;
1047 title <<
"Chi2IncrementVsEta_" <<
i+1 <<
"-" << j+1 ;
1050 title <<
"Chi2GoodHit_" <<
i+1 <<
"-" << j+1 ;
1053 title <<
"Chi2BadHit_" <<
i+1 <<
"-" << j+1 ;
1056 title <<
"Chi2DeltaHit_" <<
i+1 <<
"-" << j+1 ;
1059 title <<
"Chi2NSharedHit_" <<
i+1 <<
"-" << j+1 ;
1062 title <<
"Chi2SharedHit_" <<
i+1 <<
"-" << j+1 ;
1068 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1072 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1076 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1082 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1086 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1090 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts";
1096 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr";
1100 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr";
1104 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr";
1110 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs";
1114 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs";
1118 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs";
1121 if ( ((
i==2||
i==4)&&(j==0||j==1)) || (
i==3||
i==5) ){
1124 title <<
"Chi2Increment_mono_" <<
i+1 <<
"-" << j+1 ;
1127 title <<
"Chi2Increment_stereo_" <<
i+1 <<
"-" << j+1 ;
1133 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1137 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1141 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1147 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1151 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1155 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_mono";
1161 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
1165 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
1169 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr_mono";
1175 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
1179 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
1183 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs_mono";
1188 gp_tsx_stereo->cd();
1190 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1192 gp_tsy_stereo->cd();
1194 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1196 gp_tsz_stereo->cd();
1198 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1202 gm_tsx_stereo->cd();
1204 title <<
"PullGM_X_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1206 gm_tsy_stereo->cd();
1208 title <<
"PullGM_Y_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1210 gm_tsz_stereo->cd();
1212 title <<
"PullGM_Z_" <<
i+1 <<
"-" << j+1 <<
"_ts_stereo";
1216 gp_trx_stereo->cd();
1218 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
1220 gp_try_stereo->cd();
1222 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
1224 gp_trz_stereo->cd();
1226 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_tr_stereo";
1230 gp_rsx_stereo->cd();
1232 title <<
"PullGP_X_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
1234 gp_rsy_stereo->cd();
1236 title <<
"PullGP_Y_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
1238 gp_rsz_stereo->cd();
1240 title <<
"PullGP_Z_" <<
i+1 <<
"-" << j+1 <<
"_rs_stereo";
1251 std::pair<LocalPoint,LocalVector>
1263 float scale = -localHit.
z() / dir.
z();
1273 return std::pair<LocalPoint,LocalVector>( projectedPos, localStripDir);
1276 template<
unsigned int D>
1283 SMatDD
R = asSMatrix<D>(rhit->parametersError()) + me.
measuredError<
D>(*rhit);
1285 return ROOT::Math::Similarity(r,R) ;
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
T getParameter(std::string const &) const
std::map< std::string, TH1F * > hPullGP_X_ts_mono
TH2F * hPrjClsize_vs_Chi2
std::map< std::string, TH1F * > hPullGM_X_ts_mono
std::map< std::string, TH1F * > hPullGM_Y_ts_stereo
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
std::map< std::string, TH1F * > hPullGP_Y_ts_mono
virtual float stripAngle(float strip) const =0
const_iterator end() const
last iterator over the map (read only)
LocalVector momentumAtEntry() const
The momentum of the track that produced the hit, at entry point.
std::map< std::string, TH1F * > hPullGP_Z_rs_mono
std::map< std::string, TH1F * > hPullGP_Z_rs_stereo
#define DEFINE_FWK_MODULE(type)
TH2F * hSt2Clsize_vs_Chi2
TrackerHitAssociator * hitAssociator
std::map< std::string, TH1F * > hPullGP_Y_rs_stereo
Sin< T >::type sin(const T &t)
std::map< std::string, TH1F * > hPullGP_Z_ts_mono
const_iterator find(const key_type &k) const
find element with specified reference key
std::map< std::string, TH1F * > hPullGP_Y_rs
std::map< std::string, TH1F * > hPullGP_Z_tr_mono
edm::Handle< std::vector< Trajectory > > trajCollectionHandle
const CartesianTrajectoryError cartesianError() const
const edm::ParameterSet conf_
std::map< std::string, TH1F * > hChi2Increment
std::map< std::string, TH1F * > hChi2BadHit
TH2F * hSt1Clsize_vs_Chi2
GlobalPoint globalPosition() const
std::map< std::string, TH1F * > hChi2SharedHit
std::map< std::string, TH1F * > hChi2Increment_mono
std::map< std::string, TH1F * > hPullGP_Y_ts
std::map< std::string, TH1F * > hPullGP_X_rs
std::map< std::string, TH1F * > hPullGP_X_tr_stereo
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
std::vector< SimHitIdpr > associateHitId(const TrackingRecHit &thit)
std::map< std::string, TH1F * > hPullGP_Y_tr
std::map< std::string, TH1F * > hChi2DeltaHit
TH2F * hPixClsize_vs_Chi2
virtual float strip(const LocalPoint &) const =0
edm::ESHandle< Propagator > thePropagator
edm::Handle< edm::View< reco::Track > > trackCollectionHandle
std::map< std::string, TH1F * > hPullGM_Z_ts_stereo
double eta() const
pseudorapidity of momentum vector
std::map< std::string, TH1F * > hPullGP_Z_ts
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
edm::ESHandle< MagneticField > theMF
Local3DPoint localPosition() const
double chi2() const
chi-squared of the fit
std::map< std::string, TH1F * > hPullGP_X_ts
std::map< std::string, TH1F * > hPullGP_Z_rs
TestTrackHits(const edm::ParameterSet &)
LocalPoint toLocal(const GlobalPoint &gp) const
edm::ESHandle< TrajectoryStateUpdator > theUpdator
std::map< std::string, TH1F * > hChi2Increment_stereo
double pt() const
track transverse momentum
std::map< std::string, TH1F * > hChi2GoodHit
std::map< std::string, TH1F * > hPullGM_Z_ts
Cos< T >::type cos(const T &t)
std::map< std::string, TH1F * > hPullGP_Z_tr
TransientTrackingRecHit::ConstRecHitPointer CTTRHp
std::map< std::string, TH1F * > hPullGP_X_ts_stereo
unsigned short numberOfValidHits() const
number of valid hits found
virtual void beginRun(edm::Run &run, const edm::EventSetup &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const AlgebraicSymMatrix66 & matrix() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
edm::ESHandle< TransientTrackingRecHitBuilder > theBuilder
LocalVector localDirection() const
Obsolete. Same as momentumAtEntry().unit(), for backward compatibility.
std::vector< SimTrack >::const_iterator g4t_iterator
edm::Handle< TrackingParticleCollection > trackingParticleCollectionHandle
std::map< std::string, TH1F * > hPullGP_Y_rs_mono
TrajectoryStateOnSurface TSOS
ROOT::Math::SVector< double, D1 > Vector
TH1F * hTotChi2NSharedHit
std::map< std::string, TH1F * > hPullGM_Y_ts_mono
const GlobalError position() const
Position error submatrix.
std::map< std::string, TH1F * > hPullGP_X_rs_mono
virtual void analyze(const edm::Event &, const edm::EventSetup &)
std::map< std::string, TH1F * > hPullGP_Y_tr_stereo
std::map< std::string, TH1F * > hPullGP_Z_tr_stereo
edm::ESHandle< TrackAssociatorBase > trackAssociator
T const * product() const
std::map< std::string, TH1F * > hPullGP_X_tr
std::map< std::string, TH1F * > hPullGP_X_tr_mono
unsigned short processType() const
edm::ESHandle< TrackerGeometry > theG
std::map< std::string, TH1F * > hChi2NSharedHit
GlobalVector globalMomentum() const
const BoundPlane & surface() const
The nominal surface of the GeomDet.
std::pair< LocalPoint, LocalVector > projectHit(const PSimHit &, const StripGeomDetUnit *, const BoundPlane &)
std::map< std::string, TH1F * > hPullGM_X_ts
std::vector< PSimHit > associateHit(const TrackingRecHit &thit)
std::map< std::string, TH1F * > hPullGP_Z_ts_stereo
std::map< std::string, TH1F * > hPullGP_X_rs_stereo
std::map< std::string, TH1F * > hPullGP_Y_ts_stereo
edm::Handle< TrajTrackAssociationCollection > trajTrackAssociationCollectionHandle
std::map< std::string, TH1F * > hPullGM_Z_ts_mono
double computeChi2Increment(MeasurementExtractor, TransientTrackingRecHit::ConstRecHitPointer)
std::map< std::string, TH2F * > hChi2IncrementVsEta
const PositionType & position() const
std::string propagatorName
DecomposeProduct< arg, typename Div::arg > D
std::map< std::string, TH1F * > hPullGM_X_ts_stereo
std::map< std::string, TH1F * > hPullGM_Y_ts
std::map< std::string, TH1F * > hPullGP_Y_tr_mono