66 virtual void endJob()
override ;
126 trackTagsOut_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOut")),
127 trackTagsOld_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOld")),
128 tpTags_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tp")),
129 out(iConfig.getParameter<std::
string>(
"out"))
131 LogTrace(
"TestOutliers") <<
"constructor";
143 LogTrace(
"TestOutliers") <<
"end constructor";
173 LogTrace(
"TestOutliers") <<
"analyze event #" << iEvent.
id();
190 sizeOut->Fill(recSimCollOut.size());
191 sizeOld->Fill(recSimCollOld.size());
195 LogTrace(
"TestOutliers") <<
"tOld size=" << tracksOld->size() <<
" tOut size=" << tracksOut->size()
196 <<
" aOld size=" << recSimCollOld.size() <<
" aOut size=" << recSimCollOut.size();
199 LogTrace(
"TestOutliers") <<
"recSimCollOld.size()=" << recSimCollOld.size() ;
203 LogTrace(
"TestOutliers") <<
"trackOld->pt()=" << trackOld->pt() <<
" trackOld->numberOfValidHits()=" << trackOld->numberOfValidHits();
204 std::vector<pair<TrackingParticleRef, double> > tpOld;
205 if(recSimCollOld.find(trackOld) != recSimCollOld.end()){
206 tpOld = recSimCollOld[trackOld];
207 if (tpOld.size()!=0)
LogTrace(
"TestOutliers") <<
" associated" ;
208 else LogTrace(
"TestOutliers") <<
" NOT associated" ;
209 }
else LogTrace(
"TestOutliers") <<
" NOT associated" ;
211 LogTrace(
"TestOutliers") <<
"recSimCollOut.size()=" << recSimCollOut.size() ;
215 LogTrace(
"TestOutliers") <<
"trackOut->pt()=" << trackOut->pt() <<
" trackOut->numberOfValidHits()=" << trackOut->numberOfValidHits();
216 std::vector<pair<TrackingParticleRef, double> > tpOut;
217 if(recSimCollOut.find(trackOut) != recSimCollOut.end()){
218 tpOut = recSimCollOut[trackOut];
219 if (tpOut.size()!=0)
LogTrace(
"TestOutliers") <<
" associated" ;
220 else LogTrace(
"TestOutliers") <<
" NOT associated" ;
221 }
else LogTrace(
"TestOutliers") <<
" NOT associated" ;
225 LogTrace(
"TestOutliers") <<
"tracksOut->size()="<<tracksOut->size();
226 LogTrace(
"TestOutliers") <<
"tracksOld->size()="<<tracksOld->size();
228 std::vector<unsigned int> outused;
229 for(
unsigned int j=0;
j<tracksOld->size(); ++
j) {
232 LogTrace(
"TestOutliers") <<
"now track old with id=" <<
j <<
" seed ref=" << trackOld->
seedRef().
get() <<
" pt=" << trackOld->
pt()
234 <<
" tip= " << fabs(trackOld->
dxy(
beamSpot->position()))
235 <<
" lip= " << fabs(trackOld->
dsz(
beamSpot->position()));
250 std::vector<unsigned int> outtest;
251 for(
unsigned int k=0;
k<tracksOut->size(); ++
k) {
254 outtest.push_back(
k);
259 if (outtest.size()==1) {
261 LogTrace(
"TestOutliers") <<
"now track out with id=" << outtest[0] <<
" seed ref=" << trackOut->
seedRef().
get() <<
" pt=" << trackOut->
pt();
262 outused.push_back(outtest[0]);
263 }
else if (outtest.size()>1) {
264 for(
unsigned int p=0;
p<outtest.size(); ++
p) {
268 if ((*itOut)->isValid()) {
269 bool thishit =
false;
271 if ((*itOld)->isValid()) {
279 if (!thishit) allhits =
false;
284 LogTrace(
"TestOutliers") <<
"now track out with id=" << outtest[
p] <<
" seed ref=" << trackOut->
seedRef().
get() <<
" pt=" << trackOut->
pt();
285 outused.push_back(outtest[
p]);
290 if (outtest.size()==0 || trackOut.
get()==0 ) {
291 if(recSimCollOld.find(trackOld) != recSimCollOld.end()){
292 vector<pair<TrackingParticleRef, double> > tpOld;
293 tpOld = recSimCollOld[trackOld];
294 if (tpOld.size()!=0) {
296 <<
" and fraction=" << tpOld.begin()->second;
300 LogTrace(
"TestOutliers") <<
"...skip to next old track";
306 bool oldAssoc = recSimCollOld.find(trackOld) != recSimCollOld.end();
307 bool outAssoc = recSimCollOut.find(trackOut) != recSimCollOut.end();
308 LogTrace(
"TestOutliers") <<
"outAssoc=" << outAssoc <<
" oldAssoc=" << oldAssoc;
336 std::vector<unsigned int> tpids;
337 std::vector<std::pair<TrackingParticleRef, double> > tpOut;
338 std::vector<pair<TrackingParticleRef, double> > tpOld;
342 tpOut = recSimCollOut[trackOut];
343 if (tpOut.size()!=0) {
345 tprOut = tpOut.begin()->first;
346 fracOut = tpOut.begin()->second;
348 tpids.push_back(g4T->trackId());
354 tpOld = recSimCollOld[trackOld];
355 if (tpOld.size()!=0) {
356 tprOld = tpOld.begin()->first;
360 if (tpOut.size()==0) {
362 tpids.push_back(g4T->trackId());
368 if (tprOut.
get()!=0 || tprOld.
get()!=0) {
370 tpr = tprOut.
get()!=0 ? tprOut : tprOld;
372 const SimTrack * assocTrack = &(*tpr->g4Track_begin());
381 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
382 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
385 <<
" fracOut=" << fracOut
389 double PtPullOut = (trackOut->
pt()-
sqrt(tpr->momentum().perp2()))/trackOut->
ptError();
390 double PtPullOld = (trackOld->
pt()-
sqrt(tpr->momentum().perp2()))/trackOld->
ptError();
398 ftsAtProduction(
GlobalPoint(tpr->vertex().x(),tpr->vertex().y(),tpr->vertex().z()),
402 TSCPBuilderNoMaterial tscpBuilder;
409 double qoverpSim = tsAtClosestApproach.
charge()/p.
mag();
411 double phiSim = p.
phi();
414 double d0Sim = -dxySim;
415 double dzSim = dszSim*p.
mag()/p.
perp();
422 double phi0PullOut=(trackOut->
phi()-phiSim)/trackOut->
phiError();
423 double phi0PullOld=(trackOld->
phi()-phiSim)/trackOld->
phiError();
424 double d0PullOut=(trackOut->
d0()-d0Sim)/trackOut->
d0Error();
425 double d0PullOld=(trackOld->
d0()-d0Sim)/trackOld->
d0Error();
426 double dzPullOut=(trackOut->
dz()-dzSim)/trackOut->
dzError();
427 double dzPullOld=(trackOld->
dz()-dzSim)/trackOld->
dzError();
445 if(tprOut.
get()!=0 && tprOld.
get()==0) {
446 if (tpOld.size()!=0 && tpOld.begin()->second<=0.5) {
455 }
else if(tprOut.
get()==0 && tprOld.
get()!=0) {
457 <<
" and fraction=" << tpOld.begin()->second;
458 if (tpOld.begin()->second>0.5) {
464 if ( fabs(PtPullOut) < fabs(PtPullOld) )
473 LogTrace(
"TestOutliers") <<
"track old";
475 LogTrace(
"TestOutliers") << (*itOld)->isValid() <<
" " << (*itOld)->geographicalId().rawId();
477 LogTrace(
"TestOutliers") <<
"track out";
479 LogTrace(
"TestOutliers") << (*itOut)->isValid() <<
" " << (*itOut)->geographicalId().rawId();
484 vector<pair<int, trackingRecHit_iterator> > gainedlostoutliers;
488 if ((*itOut)->isValid()) {
490 if ( (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) gained =
false;
493 gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(1,itOut));
494 LogTrace(
"TestOutliers") <<
"broken trajectory during old fit... gained hit " << (*itOut)->geographicalId().rawId();
503 bool outlier =
false;
507 if ( (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) {
509 if ( (*itOld)->isValid() && !(*itOut)->isValid() && (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) {
510 LogTrace(
"TestOutliers") << (*itOld)->isValid() <<
" " << (*itOut)->isValid() <<
" "
511 << (*itOld)->geographicalId().rawId() <<
" " << (*itOut)->geographicalId().rawId();
516 if (lost) gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(2,itOld));
517 if (lost)
LogTrace(
"TestOutliers") <<
"lost";
518 else if (outlier) gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(3,itOld));
521 for (std::vector<pair<int, trackingRecHit_iterator> >::iterator it = gainedlostoutliers.begin(); it!=gainedlostoutliers.end();++it) {
522 LogTrace(
"TestOutliers") <<
"type of processed hit:" <<it->first;
526 bool outlier =
false;
527 if (it->first==1) gained =
true;
528 else if (it->first==2) lost =
true;
529 else if (it->first==3) outlier =
true;
531 if (outlier||lost||gained) {
534 if (lost && (*itHit)->isValid()==
false) {
536 LogTrace(
"TestOutliers") <<
"lost invalid";
539 else if (gained && (*itHit)->isValid()==
false) {
541 LogTrace(
"TestOutliers") <<
"gained invalid";
548 bool goodhit =
false;
549 for(
size_t j=0;
j<simTrackIds.size();
j++){
550 for (
size_t jj=0;
jj<tpids.size();
jj++){
551 if (simTrackIds[
j].
first == tpids[
jj]) goodhit =
true;
560 if (dynamic_cast<const SiPixelRecHit*>(&**itHit)){
561 LogTrace(
"TestOutliers") <<
"SiPixelRecHit";
562 clustersize = ((
const SiPixelRecHit*)(&**itHit))->cluster()->size() ;
565 else if (dynamic_cast<const SiStripRecHit2D*>(&**itHit)){
566 LogTrace(
"TestOutliers") <<
"SiStripRecHit2D";
567 clustersize = ((
const SiStripRecHit2D*)(&**itHit))->cluster()->amplitudes().size() ;
570 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(&**itHit)){
571 LogTrace(
"TestOutliers") <<
"SiStripMatchedRecHit2D";
572 int clsize1 = ((
const SiStripMatchedRecHit2D*)(&**itHit))->monoCluster().amplitudes().size();
573 int clsize2 = ((
const SiStripMatchedRecHit2D*)(&**itHit))->stereoCluster().amplitudes().size();
574 if (clsize1>clsize2) clustersize = clsize1;
575 else clustersize = clsize2;
578 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(&**itHit)){
579 LogTrace(
"TestOutliers") <<
"ProjectedSiStripRecHit2D";
580 clustersize = ((
const ProjectedSiStripRecHit2D*)(&**itHit))->originalHit().cluster()->amplitudes().size();
585 int subdetId = (*itHit)->geographicalId().subdetId();
586 DetId id = (*itHit)->geographicalId();
587 int layerId = tTopo->layer(
id);
588 layerval = subdetId*10+layerId;
591 GlobalPoint gpos =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal((*itHit)->localPosition());
607 double energyLoss_ = 0.;
608 unsigned int monoId = 0;
609 std::vector<double> energyLossM;
610 std::vector<double> energyLossS;
612 if (assSimHits.size()==0)
continue;
614 std::vector<unsigned int> trackIds;
618 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
620 unsigned int tId =
m->trackId();
621 if (
find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
622 LogTrace(
"TestOutliers") <<
"id=" << tId;
623 if (
m->energyLoss()>energyLoss_) {
625 energyLoss_ =
m->energyLoss();
628 if (monoId==0) monoId =
m->detUnitId();
629 if (monoId ==
m->detUnitId()){
630 energyLossM.push_back(
m->energyLoss());
633 energyLossS.push_back(
m->energyLoss());
637 energyLossM.push_back(
m->energyLoss());
640 unsigned int nIds = trackIds.size();
644 posxy->Fill(fabs(gpos.
x()),fabs(gpos.
y()));
645 poszr->Fill(fabs(gpos.
z()),
sqrt(gpos.
x()*gpos.
x()+gpos.
y()*gpos.
y()));
652 bool ioniOnly =
true;
653 unsigned int idc = 0;
654 for (
size_t jj=0;
jj<tpids.size();
jj++){
655 idc +=
std::count(trackIds.begin(),trackIds.end(),tpids[
jj]);
657 if (idc==trackIds.size()) {
660 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin()+1;
m<assSimHits.end();
m++){
661 if ((
m->processType()!=7&&
m->processType()!=8&&
m->processType()!=9)&&
abs(
m->particleType())!=11){
666 if (ioniOnly&&!shared){
667 LogTrace(
"TestOutliers") <<
"delta";
673 if (clustersize>=4) {
703 if (energyLossM.size()>1) {
704 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
709 if (energyLossM.size()>1&&energyLossS.size()<=1) {
710 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
713 else if (energyLossS.size()>1&&energyLossM.size()<=1) {
714 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
717 else if (energyLossS.size()>1&&energyLossM.size()>1) {
718 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
719 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
720 energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0]
726 LogTrace(
"TestOutliers") <<
"before merged";
727 const SiStripMatchedRecHit2D*
tmp =
dynamic_cast<const SiStripMatchedRecHit2D*
>(&**itHit);
729 LogTrace(
"TestOutliers") <<
"assSimHits.size()=" << assSimHits.size();
730 if ( (assSimHits.size()>1 && tmp==0) ||
731 (assSimHits.size()>2 && tmp!=0) ) {
738 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
739 unsigned int tId =
m->trackId();
740 LogTrace(
"TestOutliers") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss()
741 <<
" proc=" <<
m->processType() <<
" part=" <<
m->particleType();
742 if (
find(tpids.begin(),tpids.end(),tId)==tpids.end())
continue;
743 if (
m->processType()==2) {
749 GlobalPoint gps =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal(
m->localPosition());
751 ROOT::Math::SVector<double,3>
delta;
752 delta[0]=gpos.
x()-gps.
x();
753 delta[1]=gpos.
y()-gps.
y();
754 delta[2]=gpos.
z()-gps.
z();
755 LogTrace(
"TestOutliers") << delta <<
" " << ger ;
756 double mpull =
sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
757 LogTrace(
"TestOutliers") <<
"hit pull=" << mpull;
761 LogTrace(
"TestOutliers") <<
"end merged";
771 if ((hittypeval!=3 && assSimHits.size()<2)||(hittypeval==3 && assSimHits.size()<3)){
780 LogTrace(
"TestOutliers") <<
"out good";
784 LogTrace(
"TestOutliers") <<
"lost good";
788 LogTrace(
"TestOutliers") <<
"gained good";
795 if (ioniOnly&&!shared) {
801 }
else if(!ioniOnly&&!shared) {
814 LogTrace(
"TestOutliers") <<
"out merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
820 LogTrace(
"TestOutliers") <<
"lost merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
826 LogTrace(
"TestOutliers") <<
"gained merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
828 LogTrace(
"TestOutliers") <<
"merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
841 probXbad->Fill(pix->probabilityX());
842 probYbad->Fill(pix->probabilityY());
844 LogTrace(
"TestOutliers") <<
"out bad";
848 LogTrace(
"TestOutliers") <<
"lost bad";
852 LogTrace(
"TestOutliers") <<
"gained bad";
863 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
864 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
867 <<
" fracOut=" << fracOut
869 LogTrace(
"TestOutliers") <<
"track with gained hits";
875 LogTrace(
"TestOutliers") <<
"end track old #" <<
j;
878 for (
unsigned int k=0;
k<tracksOut->size();++
k) {
879 if (
find(outused.begin(),outused.end(),
k)==outused.end() ) {
881 bool outAssoc = recSimCollOut.find(trackOut) != recSimCollOut.end();
900 const bool oldAddDir = TH1::AddDirectoryStatus();
901 TH1::AddDirectory(
true);
902 file =
new TFile(
out.c_str(),
"recreate");
903 histoPtOut =
new TH1F(
"histoPtOut",
"histoPtOut",100,-10,10);
904 histoPtOld =
new TH1F(
"histoPtOld",
"histoPtOld",100,-10,10);
905 histoQoverpOut =
new TH1F(
"histoQoverpOut",
"histoQoverpOut",250,-25,25);
906 histoQoverpOld =
new TH1F(
"histoQoverpOld",
"histoQoverpOld",250,-25,25);
907 histoPhiOut =
new TH1F(
"histoPhiOut",
"histoPhiOut",250,-25,25);
908 histoPhiOld =
new TH1F(
"histoPhiOld",
"histoPhiOld",250,-25,25);
909 histoD0Out =
new TH1F(
"histoD0Out",
"histoD0Out",250,-25,25);
910 histoD0Old =
new TH1F(
"histoD0Old",
"histoD0Old",250,-25,25);
911 histoDzOut =
new TH1F(
"histoDzOut",
"histoDzOut",250,-25,25);
912 histoDzOld =
new TH1F(
"histoDzOld",
"histoDzOld",250,-25,25);
913 histoLambdaOut =
new TH1F(
"histoLambdaOut",
"histoLambdaOut",250,-25,25);
914 histoLambdaOld =
new TH1F(
"histoLambdaOld",
"histoLambdaOld",250,-25,25);
915 deltahits =
new TH1F(
"deltahits",
"deltahits",80,-40,40);
916 deltahitsOK =
new TH1F(
"deltahitsOK",
"deltahitsOK",20,0,20);
917 deltahitsNO =
new TH1F(
"deltahitsNO",
"deltahitsNO",20,0,20);
918 okcutsOut =
new TH1F(
"okcutsOut",
"okcutsOut",2,-0.5,1.5);
919 okcutsOld =
new TH1F(
"okcutsOld",
"okcutsOld",2,-0.5,1.5);
920 tracks =
new TH1F(
"tracks_",
"tracks_",2,-0.5,1.5);
921 goodbadhits =
new TH1F(
"goodbadhits",
"goodbadhits",2,-0.5,1.5);
922 process =
new TH1F(
"process",
"process",20,-0.5,19.5);
923 goodcluster =
new TH1F(
"goodcluster",
"goodcluster",40,-0.5,39.5);
924 goodprocess =
new TH1F(
"goodprocess",
"goodprocess",20,-0.5,19.5);
925 badcluster =
new TH1F(
"badcluster",
"badcluster",40,-0.5,39.5);
926 badprocess =
new TH1F(
"badprocess",
"badprocess",20,-0.5,19.5);
927 goodhittype =
new TH1F(
"goodhittype",
"goodhittype",5,-0.5,4.5);
928 goodlayer =
new TH1F(
"goodlayer",
"goodlayer",70,-0.5,69.5);
930 goodlayer_clgteq4 =
new TH1F(
"goodlayer_clgteq4",
"goodlayer_clgteq4",70,-0.5,69.5);
931 goodhittype_cllt4 =
new TH1F(
"goodhittype_cllt4",
"goodhittype_cllt4",5,-0.5,4.5);
932 goodlayer_cllt4 =
new TH1F(
"goodlayer_cllt4",
"goodlayer_cllt4",70,-0.5,69.5);
933 badhittype =
new TH1F(
"badhittype",
"badhittype",5,-0.5,4.5);
934 badlayer =
new TH1F(
"badlayer",
"badlayer",70,-0.5,69.5);
935 posxy =
new TH2F(
"posxy",
"posxy",1200,0,120,1200,0,120);
936 poszr =
new TH2F(
"poszr",
"poszr",3000,0,300,1200,0,120);
949 goodpix_simvecsize =
new TH1F(
"goodpix_simvecsize",
"goodpix_simvecsize",40,-0.5,39.5);
950 goodst1_simvecsize =
new TH1F(
"goodst1_simvecsize",
"goodst1_simvecsize",40,-0.5,39.5);
951 goodst2_simvecsize =
new TH1F(
"goodst2_simvecsize",
"goodst2_simvecsize",40,-0.5,39.5);
952 goodprj_simvecsize =
new TH1F(
"goodprj_simvecsize",
"goodprj_simvecsize",40,-0.5,39.5);
957 goodbadmerged =
new TH1F(
"goodbadmerged",
"goodbadmerged",5,0.5,5.5);
960 energyLoss =
new TH1F(
"energyLoss",
"energyLoss",1000,0,0.1);
961 energyLossMax =
new TH1F(
"energyLossMax",
"energyLossMax",1000,0,0.1);
962 energyLossRatio =
new TH1F(
"energyLossRatio",
"energyLossRatio",100,0,1);
963 nOfTrackIds =
new TH1F(
"nOfTrackIds",
"nOfTrackIds",10,0,10);
964 mergedPull =
new TH1F(
"mergedPull",
"mergedPull",100,0,10);
965 mergedlayer =
new TH1F(
"mergedlayer",
"mergedlayer",70,-0.5,69.5);
966 mergedhittype =
new TH1F(
"mergedhittype",
"mergedhittype",5,-0.5,4.5);
967 mergedcluster =
new TH1F(
"mergedcluster",
"mergedcluster",40,-0.5,39.5);
970 hitsPerTrackLost =
new TH1F(
"hitsPerTrackLost",
"hitsPerTrackLost",40, -0.5, 39.5);
972 hitsPerTrackGained =
new TH1F(
"hitsPerTrackGained",
"hitsPerTrackGained",40, -0.5, 39.5);
974 sizeOut =
new TH1F(
"sizeOut",
"sizeOut",900,-0.5,899.5);
975 sizeOld =
new TH1F(
"sizeOld",
"sizeOld",900,-0.5,899.5);
976 sizeOutT =
new TH1F(
"sizeOutT",
"sizeOutT",900,-0.5,899.5);
977 sizeOldT =
new TH1F(
"sizeOldT",
"sizeOldT",900,-0.5,899.5);
978 countOutA =
new TH1F(
"countOutA",
"countOutA",2,0,2);
979 countOutT =
new TH1F(
"countOutT",
"countOutT",2,0,2);
980 countOldT =
new TH1F(
"countOldT",
"countOldT",2,0,2);
981 gainedhits =
new TH1F(
"gainedhits",
"gainedhits",2,0,2);
982 gainedhits2 =
new TH1F(
"gainedhits2",
"gainedhits2",30,-0.5,29.5);
983 probXgood =
new TH1F(
"probXgood",
"probXgood",110,0,1.1);
984 probXbad =
new TH1F(
"probXbad",
"probXbad",110,0,1.1);
985 probXdelta =
new TH1F(
"probXdelta",
"probXdelta",110,0,1.1);
986 probXshared =
new TH1F(
"probXshared",
"probXshared",110,0,1.1);
987 probXnoshare =
new TH1F(
"probXnoshare",
"probXnoshare",110,0,1.1);
988 probYgood =
new TH1F(
"probYgood",
"probYgood",110,0,1.1);
989 probYbad =
new TH1F(
"probYbad",
"probYbad",110,0,1.1);
990 probYdelta =
new TH1F(
"probYdelta",
"probYdelta",110,0,1.1);
991 probYshared =
new TH1F(
"probYshared",
"probYshared",110,0,1.1);
992 probYnoshare =
new TH1F(
"probYnoshare",
"probYnoshare",110,0,1.1);
993 TH1::AddDirectory(oldAddDir);
998 LogTrace(
"TestOutliers") <<
"TestOutliers::endJob";
1000 LogTrace(
"TestOutliers") <<
"outfile written";
1002 LogTrace(
"TestOutliers") <<
"oufile closed";
1003 LogTrace(
"TestOutliers") <<
"exiting TestOutliers::endJob";
double qoverp() const
q / p
value_type const * get() const
T getParameter(std::string const &) const
TH1F * hitsPerTrackGained
double d0Error() const
error on d0
TH1F * goodprj_clustersize
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
TH1F * goodpixlt4_simvecsize
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
TH1F * hitsPerTrackAssocLost
const FreeTrajectoryState & theState() const
TH1F * goodst1_simvecsize
#define DEFINE_FWK_MODULE(type)
TH1F * goodst2lt4_simvecsize
TH1F * goodst1gteq4_simvecsize
TH1F * goodprj_simvecsize
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
std::vector< Track > TrackCollection
collection of Tracks
tuple TrackAssociatorByHits
double phi() const
azimuthal angle of momentum vector
edm::ParameterSet psetold
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
double dsz() const
dsz parameter (THIS IS NOT the SZ impact parameter to (0,0,0) if refPoint is far from (0...
TrackCharge charge() const
TH1F * hitsPerTrackAssocGained
TH1F * goodst2_simvecsize
Geom::Theta< T > theta() const
TH1F * goodhittype_simvecsmall
TH1F * goodpix_clustersize
TH1F * goodprjgteq4_simvecsize
double eta() const
pseudorapidity of momentum vector
TH1F * goodst1_clustersize
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
TH1F * goodpixgteq4_simvecsize
TH1F * goodprjlt4_simvecsize
double pt() const
track transverse momentum
TH1F * goodpix_simvecsize
Cos< T >::type cos(const T &t)
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
double phiError() const
error on phi
Abs< T >::type abs(const T &t)
double lambda() const
Lambda angle.
TH1F * goodlayer_simvecsmall
edm::ParameterSet psetout
TH1F * goodhittype_simvecbig
unsigned short numberOfValidHits() const
number of valid hits found
T const * get() const
Returns C++ pointer to the item.
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
TestOutliers(const edm::ParameterSet &)
edm::InputTag trackTagsOut_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
GlobalVector momentum() const
virtual reco::RecoToSimCollection associateRecoToSim(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event, const edm::EventSetup *setup) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
double qoverpError() const
error on signed transverse curvature
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double dzError() const
error on dz
std::vector< SimTrack >::const_iterator g4t_iterator
virtual void beginRun(edm::Run &run, const edm::EventSetup &)
GlobalPoint position() const
TH1F * goodst1lt4_simvecsize
TH1F * goodhittype_clgteq4
edm::RefToBase< TrajectorySeed > seedRef() const
TH1F * deltahitsAssocGained
T const * product() const
TrackAssociatorBase * theAssociatorOld
TrackAssociatorBase * theAssociatorOut
TH1F * goodst2_clustersize
unsigned short processType() const
std::vector< std::vector< double > > tmp
std::vector< SimHitIdpr > associateHitId(const TrackingRecHit &thit) const
const math::XYZTLorentzVectorD & momentum() const
TH1F * goodst2gteq4_simvecsize
edm::ESHandle< TrackerGeometry > theG
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
int charge() const
track electric charge
TH1F * deltahitsAssocLost
TH1F * goodlayer_simvecbig
edm::InputTag trackTagsOld_
TrackerHitAssociator * hitAssociator
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
virtual void endJob() override
Global3DVector GlobalVector
double thetaError() const
error on theta
TH1F * goodbadmergedGained
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.