64 virtual void endJob()
override ;
122 trackTagsOut_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOut")),
123 trackTagsOld_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOld")),
124 tpTags_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tp")),
125 trackerHitAssociatorConfig_(consumesCollector()),
128 out(iConfig.getParameter<std::
string>(
"out"))
130 LogTrace(
"TestOutliers") <<
"constructor";
140 LogTrace(
"TestOutliers") <<
"end constructor";
170 LogTrace(
"TestOutliers") <<
"analyze event #" << iEvent.
id();
193 sizeOut->Fill(recSimCollOut.size());
194 sizeOld->Fill(recSimCollOld.size());
198 LogTrace(
"TestOutliers") <<
"tOld size=" << tracksOld->size() <<
" tOut size=" << tracksOut->size()
199 <<
" aOld size=" << recSimCollOld.size() <<
" aOut size=" << recSimCollOut.size();
202 LogTrace(
"TestOutliers") <<
"recSimCollOld.size()=" << recSimCollOld.size() ;
206 LogTrace(
"TestOutliers") <<
"trackOld->pt()=" << trackOld->pt() <<
" trackOld->numberOfValidHits()=" << trackOld->numberOfValidHits();
207 std::vector<pair<TrackingParticleRef, double> > tpOld;
208 if(recSimCollOld.find(trackOld) != recSimCollOld.end()){
209 tpOld = recSimCollOld[trackOld];
210 if (tpOld.size()!=0)
LogTrace(
"TestOutliers") <<
" associated" ;
211 else LogTrace(
"TestOutliers") <<
" NOT associated" ;
212 }
else LogTrace(
"TestOutliers") <<
" NOT associated" ;
214 LogTrace(
"TestOutliers") <<
"recSimCollOut.size()=" << recSimCollOut.size() ;
218 LogTrace(
"TestOutliers") <<
"trackOut->pt()=" << trackOut->pt() <<
" trackOut->numberOfValidHits()=" << trackOut->numberOfValidHits();
219 std::vector<pair<TrackingParticleRef, double> > tpOut;
220 if(recSimCollOut.find(trackOut) != recSimCollOut.end()){
221 tpOut = recSimCollOut[trackOut];
222 if (tpOut.size()!=0)
LogTrace(
"TestOutliers") <<
" associated" ;
223 else LogTrace(
"TestOutliers") <<
" NOT associated" ;
224 }
else LogTrace(
"TestOutliers") <<
" NOT associated" ;
228 LogTrace(
"TestOutliers") <<
"tracksOut->size()="<<tracksOut->size();
229 LogTrace(
"TestOutliers") <<
"tracksOld->size()="<<tracksOld->size();
231 std::vector<unsigned int> outused;
232 for(
unsigned int j=0;
j<tracksOld->size(); ++
j) {
235 LogTrace(
"TestOutliers") <<
"now track old with id=" <<
j <<
" seed ref=" << trackOld->
seedRef().
get() <<
" pt=" << trackOld->
pt()
237 <<
" tip= " << fabs(trackOld->
dxy(
beamSpot->position()))
238 <<
" lip= " << fabs(trackOld->
dsz(
beamSpot->position()));
253 std::vector<unsigned int> outtest;
254 for(
unsigned int k=0;
k<tracksOut->size(); ++
k) {
257 outtest.push_back(
k);
262 if (outtest.size()==1) {
264 LogTrace(
"TestOutliers") <<
"now track out with id=" << outtest[0] <<
" seed ref=" << trackOut->
seedRef().
get() <<
" pt=" << trackOut->
pt();
265 outused.push_back(outtest[0]);
266 }
else if (outtest.size()>1) {
267 for(
unsigned int p=0;
p<outtest.size(); ++
p) {
271 if ((*itOut)->isValid()) {
272 bool thishit =
false;
274 if ((*itOld)->isValid()) {
282 if (!thishit) allhits =
false;
287 LogTrace(
"TestOutliers") <<
"now track out with id=" << outtest[
p] <<
" seed ref=" << trackOut->
seedRef().
get() <<
" pt=" << trackOut->
pt();
288 outused.push_back(outtest[
p]);
293 if (outtest.size()==0 || trackOut.
get()==0 ) {
294 if(recSimCollOld.find(trackOld) != recSimCollOld.end()){
295 vector<pair<TrackingParticleRef, double> > tpOld;
296 tpOld = recSimCollOld[trackOld];
297 if (tpOld.size()!=0) {
299 <<
" and fraction=" << tpOld.begin()->second;
303 LogTrace(
"TestOutliers") <<
"...skip to next old track";
309 bool oldAssoc = recSimCollOld.find(trackOld) != recSimCollOld.end();
310 bool outAssoc = recSimCollOut.find(trackOut) != recSimCollOut.end();
311 LogTrace(
"TestOutliers") <<
"outAssoc=" << outAssoc <<
" oldAssoc=" << oldAssoc;
339 std::vector<unsigned int> tpids;
340 std::vector<std::pair<TrackingParticleRef, double> > tpOut;
341 std::vector<pair<TrackingParticleRef, double> > tpOld;
345 tpOut = recSimCollOut[trackOut];
346 if (tpOut.size()!=0) {
348 tprOut = tpOut.begin()->first;
349 fracOut = tpOut.begin()->second;
351 tpids.push_back(g4T->trackId());
357 tpOld = recSimCollOld[trackOld];
358 if (tpOld.size()!=0) {
359 tprOld = tpOld.begin()->first;
363 if (tpOut.size()==0) {
365 tpids.push_back(g4T->trackId());
371 if (tprOut.
get()!=0 || tprOld.
get()!=0) {
373 tpr = tprOut.
get()!=0 ? tprOut : tprOld;
375 const SimTrack * assocTrack = &(*tpr->g4Track_begin());
384 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
385 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
388 <<
" fracOut=" << fracOut
392 double PtPullOut = (trackOut->
pt()-
sqrt(tpr->momentum().perp2()))/trackOut->
ptError();
393 double PtPullOld = (trackOld->
pt()-
sqrt(tpr->momentum().perp2()))/trackOld->
ptError();
401 ftsAtProduction(
GlobalPoint(tpr->vertex().x(),tpr->vertex().y(),tpr->vertex().z()),
412 double qoverpSim = tsAtClosestApproach.
charge()/p.
mag();
414 double phiSim = p.
phi();
417 double d0Sim = -dxySim;
418 double dzSim = dszSim*p.
mag()/p.
perp();
425 double phi0PullOut=(trackOut->
phi()-phiSim)/trackOut->
phiError();
426 double phi0PullOld=(trackOld->
phi()-phiSim)/trackOld->
phiError();
427 double d0PullOut=(trackOut->
d0()-d0Sim)/trackOut->
d0Error();
428 double d0PullOld=(trackOld->
d0()-d0Sim)/trackOld->
d0Error();
429 double dzPullOut=(trackOut->
dz()-dzSim)/trackOut->
dzError();
430 double dzPullOld=(trackOld->
dz()-dzSim)/trackOld->
dzError();
448 if(tprOut.
get()!=0 && tprOld.
get()==0) {
449 if (tpOld.size()!=0 && tpOld.begin()->second<=0.5) {
458 }
else if(tprOut.
get()==0 && tprOld.
get()!=0) {
460 <<
" and fraction=" << tpOld.begin()->second;
461 if (tpOld.begin()->second>0.5) {
467 if ( fabs(PtPullOut) < fabs(PtPullOld) )
476 LogTrace(
"TestOutliers") <<
"track old";
478 LogTrace(
"TestOutliers") << (*itOld)->isValid() <<
" " << (*itOld)->geographicalId().rawId();
480 LogTrace(
"TestOutliers") <<
"track out";
482 LogTrace(
"TestOutliers") << (*itOut)->isValid() <<
" " << (*itOut)->geographicalId().rawId();
487 vector<pair<int, trackingRecHit_iterator> > gainedlostoutliers;
491 if ((*itOut)->isValid()) {
493 if ( (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) gained =
false;
496 gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(1,itOut));
497 LogTrace(
"TestOutliers") <<
"broken trajectory during old fit... gained hit " << (*itOut)->geographicalId().rawId();
506 bool outlier =
false;
510 if ( (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) {
512 if ( (*itOld)->isValid() && !(*itOut)->isValid() && (*itOld)->geographicalId().rawId()==(*itOut)->geographicalId().rawId() ) {
513 LogTrace(
"TestOutliers") << (*itOld)->isValid() <<
" " << (*itOut)->isValid() <<
" "
514 << (*itOld)->geographicalId().rawId() <<
" " << (*itOut)->geographicalId().rawId();
519 if (lost) gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(2,itOld));
520 if (lost)
LogTrace(
"TestOutliers") <<
"lost";
521 else if (outlier) gainedlostoutliers.push_back(pair<int, trackingRecHit_iterator>(3,itOld));
524 for (std::vector<pair<int, trackingRecHit_iterator> >::iterator it = gainedlostoutliers.begin(); it!=gainedlostoutliers.end();++it) {
525 LogTrace(
"TestOutliers") <<
"type of processed hit:" <<it->first;
529 bool outlier =
false;
530 if (it->first==1) gained =
true;
531 else if (it->first==2) lost =
true;
532 else if (it->first==3) outlier =
true;
534 if (outlier||lost||gained) {
537 if (lost && (*itHit)->isValid()==
false) {
539 LogTrace(
"TestOutliers") <<
"lost invalid";
542 else if (gained && (*itHit)->isValid()==
false) {
544 LogTrace(
"TestOutliers") <<
"gained invalid";
550 std::vector<SimHitIdpr> simTrackIds = hitAssociator.
associateHitId(**itHit);
551 bool goodhit =
false;
552 for(
size_t j=0;
j<simTrackIds.size();
j++){
553 for (
size_t jj=0;
jj<tpids.size();
jj++){
554 if (simTrackIds[
j].
first == tpids[
jj]) goodhit =
true;
563 if (dynamic_cast<const SiPixelRecHit*>(&**itHit)){
564 LogTrace(
"TestOutliers") <<
"SiPixelRecHit";
565 clustersize = ((
const SiPixelRecHit*)(&**itHit))->cluster()->size() ;
568 else if (dynamic_cast<const SiStripRecHit2D*>(&**itHit)){
569 LogTrace(
"TestOutliers") <<
"SiStripRecHit2D";
570 clustersize = ((
const SiStripRecHit2D*)(&**itHit))->cluster()->amplitudes().size() ;
573 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(&**itHit)){
574 LogTrace(
"TestOutliers") <<
"SiStripMatchedRecHit2D";
577 if (clsize1>clsize2) clustersize = clsize1;
578 else clustersize = clsize2;
581 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(&**itHit)){
582 LogTrace(
"TestOutliers") <<
"ProjectedSiStripRecHit2D";
588 int subdetId = (*itHit)->geographicalId().subdetId();
589 DetId id = (*itHit)->geographicalId();
590 int layerId = tTopo->layer(
id);
591 layerval = subdetId*10+layerId;
594 GlobalPoint gpos =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal((*itHit)->localPosition());
610 double energyLoss_ = 0.;
611 unsigned int monoId = 0;
612 std::vector<double> energyLossM;
613 std::vector<double> energyLossS;
614 std::vector<PSimHit> assSimHits = hitAssociator.
associateHit(**itHit);
615 if (assSimHits.size()==0)
continue;
617 std::vector<unsigned int> trackIds;
621 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
623 unsigned int tId =
m->trackId();
624 if (
find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
625 LogTrace(
"TestOutliers") <<
"id=" << tId;
626 if (
m->energyLoss()>energyLoss_) {
628 energyLoss_ =
m->energyLoss();
631 if (monoId==0) monoId =
m->detUnitId();
632 if (monoId ==
m->detUnitId()){
633 energyLossM.push_back(
m->energyLoss());
636 energyLossS.push_back(
m->energyLoss());
640 energyLossM.push_back(
m->energyLoss());
643 unsigned int nIds = trackIds.size();
647 posxy->Fill(fabs(gpos.
x()),fabs(gpos.
y()));
648 poszr->Fill(fabs(gpos.
z()),
sqrt(gpos.
x()*gpos.
x()+gpos.
y()*gpos.
y()));
655 bool ioniOnly =
true;
656 unsigned int idc = 0;
657 for (
size_t jj=0;
jj<tpids.size();
jj++){
658 idc +=
std::count(trackIds.begin(),trackIds.end(),tpids[
jj]);
660 if (idc==trackIds.size()) {
663 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin()+1;
m<assSimHits.end();
m++){
664 if ((
m->processType()!=7&&
m->processType()!=8&&
m->processType()!=9)&&
abs(
m->particleType())!=11){
669 if (ioniOnly&&!shared){
670 LogTrace(
"TestOutliers") <<
"delta";
676 if (clustersize>=4) {
706 if (energyLossM.size()>1) {
707 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
712 if (energyLossM.size()>1&&energyLossS.size()<=1) {
713 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
716 else if (energyLossS.size()>1&&energyLossM.size()<=1) {
717 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
720 else if (energyLossS.size()>1&&energyLossM.size()>1) {
721 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
722 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
723 energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0]
729 LogTrace(
"TestOutliers") <<
"before merged";
732 LogTrace(
"TestOutliers") <<
"assSimHits.size()=" << assSimHits.size();
733 if ( (assSimHits.size()>1 && tmp==0) ||
734 (assSimHits.size()>2 && tmp!=0) ) {
741 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
742 unsigned int tId =
m->trackId();
743 LogTrace(
"TestOutliers") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss()
744 <<
" proc=" <<
m->processType() <<
" part=" <<
m->particleType();
745 if (
find(tpids.begin(),tpids.end(),tId)==tpids.end())
continue;
746 if (
m->processType()==2) {
752 GlobalPoint gps =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal(
m->localPosition());
754 ROOT::Math::SVector<double,3>
delta;
755 delta[0]=gpos.
x()-gps.
x();
756 delta[1]=gpos.
y()-gps.
y();
757 delta[2]=gpos.
z()-gps.
z();
758 LogTrace(
"TestOutliers") << delta <<
" " << ger ;
759 double mpull =
sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
760 LogTrace(
"TestOutliers") <<
"hit pull=" << mpull;
764 LogTrace(
"TestOutliers") <<
"end merged";
774 if ((hittypeval!=3 && assSimHits.size()<2)||(hittypeval==3 && assSimHits.size()<3)){
783 LogTrace(
"TestOutliers") <<
"out good";
787 LogTrace(
"TestOutliers") <<
"lost good";
791 LogTrace(
"TestOutliers") <<
"gained good";
798 if (ioniOnly&&!shared) {
804 }
else if(!ioniOnly&&!shared) {
817 LogTrace(
"TestOutliers") <<
"out merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
823 LogTrace(
"TestOutliers") <<
"lost merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
829 LogTrace(
"TestOutliers") <<
"gained merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
831 LogTrace(
"TestOutliers") <<
"merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
847 LogTrace(
"TestOutliers") <<
"out bad";
851 LogTrace(
"TestOutliers") <<
"lost bad";
855 LogTrace(
"TestOutliers") <<
"gained bad";
866 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
867 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
870 <<
" fracOut=" << fracOut
872 LogTrace(
"TestOutliers") <<
"track with gained hits";
878 LogTrace(
"TestOutliers") <<
"end track old #" <<
j;
881 for (
unsigned int k=0;
k<tracksOut->size();++
k) {
882 if (
find(outused.begin(),outused.end(),
k)==outused.end() ) {
884 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
const edm::RefToBase< TrajectorySeed > & seedRef() const
value_type const * get() const
TH1F * hitsPerTrackGained
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > theAssociatorOutToken
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)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
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
double phi() const
azimuthal angle of momentum vector
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
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > theAssociatorOldToken
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
TH1F * goodhittype_simvecbig
float probabilityY() const
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
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
GlobalPoint position() const
TH1F * goodst1lt4_simvecsize
TH1F * goodhittype_clgteq4
TH1F * deltahitsAssocGained
virtual void beginRun(edm::Run const &run, const edm::EventSetup &) override
T const * product() const
TH1F * goodst2_clustersize
unsigned short processType() const
TrackerHitAssociator::Config trackerHitAssociatorConfig_
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
float probabilityX() const
edm::InputTag trackTagsOld_
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
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
Global3DVector GlobalVector
double thetaError() const
error on theta
TH1F * goodbadmergedGained
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.