131 trackTagsOut_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOut")),
132 trackTagsOld_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tracksOld")),
133 tpTags_(iConfig.getUntrackedParameter<edm::
InputTag>(
"tp")),
134 out(iConfig.getParameter<std::string>(
"out"))
136 LogTrace(
"TestOutliers") <<
"constructor";
148 LogTrace(
"TestOutliers") <<
"end constructor";
173 LogTrace(
"TestOutliers") <<
"analyze event #" << iEvent.
id();
182 iEvent.
getByLabel(
"offlineBeamSpot",beamSpot);
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;
338 std::vector<unsigned int> tpids;
339 std::vector<std::pair<TrackingParticleRef, double> > tpOut;
340 std::vector<pair<TrackingParticleRef, double> > tpOld;
344 tpOut = recSimCollOut[trackOut];
345 if (tpOut.size()!=0) {
347 tprOut = tpOut.begin()->first;
348 fracOut = tpOut.begin()->second;
350 tpids.push_back(g4T->trackId());
356 tpOld = recSimCollOld[trackOld];
357 if (tpOld.size()!=0) {
358 tprOld = tpOld.begin()->first;
362 if (tpOut.size()==0) {
364 tpids.push_back(g4T->trackId());
370 if (tprOut.
get()!=0 || tprOld.
get()!=0) {
372 tpr = tprOut.
get()!=0 ? tprOut : tprOld;
374 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";
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();
590 DetId id = (*itHit)->geographicalId();
591 if (
id.subdetId()==3) layerId = ((
TIBDetId)(
id)).layer();
592 if (
id.subdetId()==5) layerId = ((
TOBDetId)(id)).layer();
593 if (
id.subdetId()==1) layerId = ((
PXBDetId)(
id)).layer();
594 if (
id.subdetId()==4) layerId = ((
TIDDetId)(id)).wheel();
595 if (
id.subdetId()==6) layerId = ((
TECDetId)(
id)).wheel();
596 if (
id.subdetId()==2) layerId = ((
PXFDetId)(id)).disk();
597 layerval = subdetId*10+layerId;
600 GlobalPoint gpos =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal((*itHit)->localPosition());
616 double energyLoss_ = 0.;
617 unsigned int monoId = 0;
618 std::vector<double> energyLossM;
619 std::vector<double> energyLossS;
621 if (assSimHits.size()==0)
continue;
623 std::vector<unsigned int> trackIds;
627 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
629 unsigned int tId =
m->trackId();
630 if (
find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
631 LogTrace(
"TestOutliers") <<
"id=" << tId;
632 if (
m->energyLoss()>energyLoss_) {
634 energyLoss_ =
m->energyLoss();
637 if (monoId==0) monoId =
m->detUnitId();
638 if (monoId ==
m->detUnitId()){
639 energyLossM.push_back(
m->energyLoss());
642 energyLossS.push_back(
m->energyLoss());
646 energyLossM.push_back(
m->energyLoss());
649 unsigned int nIds = trackIds.size();
653 posxy->Fill(fabs(gpos.
x()),fabs(gpos.
y()));
654 poszr->Fill(fabs(gpos.
z()),
sqrt(gpos.
x()*gpos.
x()+gpos.
y()*gpos.
y()));
661 bool ioniOnly =
true;
662 unsigned int idc = 0;
663 for (
size_t jj=0; jj<tpids.size(); jj++){
664 idc +=
std::count(trackIds.begin(),trackIds.end(),tpids[jj]);
666 if (idc==trackIds.size()) {
669 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin()+1;
m<assSimHits.end();
m++){
670 if ((
m->processType()!=7&&
m->processType()!=8&&
m->processType()!=9)&&
abs(
m->particleType())!=11){
675 if (ioniOnly&&!shared){
676 LogTrace(
"TestOutliers") <<
"delta";
682 if (clustersize>=4) {
712 if (energyLossM.size()>1) {
713 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
718 if (energyLossM.size()>1&&energyLossS.size()<=1) {
719 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
722 else if (energyLossS.size()>1&&energyLossM.size()<=1) {
723 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
726 else if (energyLossS.size()>1&&energyLossM.size()>1) {
727 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
728 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
729 energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0]
735 LogTrace(
"TestOutliers") <<
"before merged";
738 LogTrace(
"TestOutliers") <<
"assSimHits.size()=" << assSimHits.size();
739 if ( (assSimHits.size()>1 && tmp==0) ||
740 (assSimHits.size()>2 && tmp!=0) ) {
747 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
748 unsigned int tId =
m->trackId();
749 LogTrace(
"TestOutliers") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss()
750 <<
" proc=" <<
m->processType() <<
" part=" <<
m->particleType();
751 if (
find(tpids.begin(),tpids.end(),tId)==tpids.end())
continue;
752 if (
m->processType()==2) {
758 GlobalPoint gps =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal(
m->localPosition());
760 CLHEP::HepVector
delta(3);
761 delta[0]=gpos.
x()-gps.
x();
762 delta[1]=gpos.
y()-gps.
y();
763 delta[2]=gpos.
z()-gps.
z();
764 LogTrace(
"TestOutliers") << delta <<
" " << ger ;
765 double mpull =
sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
766 LogTrace(
"TestOutliers") <<
"hit pull=" << mpull;
770 LogTrace(
"TestOutliers") <<
"end merged";
780 if ((hittypeval!=3 && assSimHits.size()<2)||(hittypeval==3 && assSimHits.size()<3)){
789 LogTrace(
"TestOutliers") <<
"out good";
793 LogTrace(
"TestOutliers") <<
"lost good";
797 LogTrace(
"TestOutliers") <<
"gained good";
804 if (ioniOnly&&!shared) {
810 }
else if(!ioniOnly&&!shared) {
823 LogTrace(
"TestOutliers") <<
"out merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
829 LogTrace(
"TestOutliers") <<
"lost merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
835 LogTrace(
"TestOutliers") <<
"gained merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
837 LogTrace(
"TestOutliers") <<
"merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
853 LogTrace(
"TestOutliers") <<
"out bad";
857 LogTrace(
"TestOutliers") <<
"lost bad";
861 LogTrace(
"TestOutliers") <<
"gained bad";
872 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
873 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
876 <<
" fracOut=" << fracOut
878 LogTrace(
"TestOutliers") <<
"track with gained hits";
884 LogTrace(
"TestOutliers") <<
"end track old #" <<
j;
887 for (
unsigned int k=0;
k<tracksOut->size();++
k) {
888 if (
find(outused.begin(),outused.end(),
k)==outused.end() ) {
890 bool outAssoc = recSimCollOut.find(trackOut) != recSimCollOut.end();
909 const bool oldAddDir = TH1::AddDirectoryStatus();
910 TH1::AddDirectory(
true);
911 file =
new TFile(
out.c_str(),
"recreate");
912 histoPtOut =
new TH1F(
"histoPtOut",
"histoPtOut",100,-10,10);
913 histoPtOld =
new TH1F(
"histoPtOld",
"histoPtOld",100,-10,10);
914 histoQoverpOut =
new TH1F(
"histoQoverpOut",
"histoQoverpOut",250,-25,25);
915 histoQoverpOld =
new TH1F(
"histoQoverpOld",
"histoQoverpOld",250,-25,25);
916 histoPhiOut =
new TH1F(
"histoPhiOut",
"histoPhiOut",250,-25,25);
917 histoPhiOld =
new TH1F(
"histoPhiOld",
"histoPhiOld",250,-25,25);
918 histoD0Out =
new TH1F(
"histoD0Out",
"histoD0Out",250,-25,25);
919 histoD0Old =
new TH1F(
"histoD0Old",
"histoD0Old",250,-25,25);
920 histoDzOut =
new TH1F(
"histoDzOut",
"histoDzOut",250,-25,25);
921 histoDzOld =
new TH1F(
"histoDzOld",
"histoDzOld",250,-25,25);
922 histoLambdaOut =
new TH1F(
"histoLambdaOut",
"histoLambdaOut",250,-25,25);
923 histoLambdaOld =
new TH1F(
"histoLambdaOld",
"histoLambdaOld",250,-25,25);
924 deltahits =
new TH1F(
"deltahits",
"deltahits",80,-40,40);
925 deltahitsOK =
new TH1F(
"deltahitsOK",
"deltahitsOK",20,0,20);
926 deltahitsNO =
new TH1F(
"deltahitsNO",
"deltahitsNO",20,0,20);
927 okcutsOut =
new TH1F(
"okcutsOut",
"okcutsOut",2,-0.5,1.5);
928 okcutsOld =
new TH1F(
"okcutsOld",
"okcutsOld",2,-0.5,1.5);
929 tracks =
new TH1F(
"tracks_",
"tracks_",2,-0.5,1.5);
930 goodbadhits =
new TH1F(
"goodbadhits",
"goodbadhits",2,-0.5,1.5);
931 process =
new TH1F(
"process",
"process",20,-0.5,19.5);
932 goodcluster =
new TH1F(
"goodcluster",
"goodcluster",40,-0.5,39.5);
933 goodprocess =
new TH1F(
"goodprocess",
"goodprocess",20,-0.5,19.5);
934 badcluster =
new TH1F(
"badcluster",
"badcluster",40,-0.5,39.5);
935 badprocess =
new TH1F(
"badprocess",
"badprocess",20,-0.5,19.5);
936 goodhittype =
new TH1F(
"goodhittype",
"goodhittype",5,-0.5,4.5);
937 goodlayer =
new TH1F(
"goodlayer",
"goodlayer",70,-0.5,69.5);
939 goodlayer_clgteq4 =
new TH1F(
"goodlayer_clgteq4",
"goodlayer_clgteq4",70,-0.5,69.5);
940 goodhittype_cllt4 =
new TH1F(
"goodhittype_cllt4",
"goodhittype_cllt4",5,-0.5,4.5);
941 goodlayer_cllt4 =
new TH1F(
"goodlayer_cllt4",
"goodlayer_cllt4",70,-0.5,69.5);
942 badhittype =
new TH1F(
"badhittype",
"badhittype",5,-0.5,4.5);
943 badlayer =
new TH1F(
"badlayer",
"badlayer",70,-0.5,69.5);
944 posxy =
new TH2F(
"posxy",
"posxy",1200,0,120,1200,0,120);
945 poszr =
new TH2F(
"poszr",
"poszr",3000,0,300,1200,0,120);
958 goodpix_simvecsize =
new TH1F(
"goodpix_simvecsize",
"goodpix_simvecsize",40,-0.5,39.5);
959 goodst1_simvecsize =
new TH1F(
"goodst1_simvecsize",
"goodst1_simvecsize",40,-0.5,39.5);
960 goodst2_simvecsize =
new TH1F(
"goodst2_simvecsize",
"goodst2_simvecsize",40,-0.5,39.5);
961 goodprj_simvecsize =
new TH1F(
"goodprj_simvecsize",
"goodprj_simvecsize",40,-0.5,39.5);
966 goodbadmerged =
new TH1F(
"goodbadmerged",
"goodbadmerged",5,0.5,5.5);
969 energyLoss =
new TH1F(
"energyLoss",
"energyLoss",1000,0,0.1);
970 energyLossMax =
new TH1F(
"energyLossMax",
"energyLossMax",1000,0,0.1);
971 energyLossRatio =
new TH1F(
"energyLossRatio",
"energyLossRatio",100,0,1);
972 nOfTrackIds =
new TH1F(
"nOfTrackIds",
"nOfTrackIds",10,0,10);
973 mergedPull =
new TH1F(
"mergedPull",
"mergedPull",100,0,10);
974 mergedlayer =
new TH1F(
"mergedlayer",
"mergedlayer",70,-0.5,69.5);
975 mergedhittype =
new TH1F(
"mergedhittype",
"mergedhittype",5,-0.5,4.5);
976 mergedcluster =
new TH1F(
"mergedcluster",
"mergedcluster",40,-0.5,39.5);
979 hitsPerTrackLost =
new TH1F(
"hitsPerTrackLost",
"hitsPerTrackLost",40, -0.5, 39.5);
981 hitsPerTrackGained =
new TH1F(
"hitsPerTrackGained",
"hitsPerTrackGained",40, -0.5, 39.5);
983 sizeOut =
new TH1F(
"sizeOut",
"sizeOut",900,-0.5,899.5);
984 sizeOld =
new TH1F(
"sizeOld",
"sizeOld",900,-0.5,899.5);
985 sizeOutT =
new TH1F(
"sizeOutT",
"sizeOutT",900,-0.5,899.5);
986 sizeOldT =
new TH1F(
"sizeOldT",
"sizeOldT",900,-0.5,899.5);
987 countOutA =
new TH1F(
"countOutA",
"countOutA",2,0,2);
988 countOutT =
new TH1F(
"countOutT",
"countOutT",2,0,2);
989 countOldT =
new TH1F(
"countOldT",
"countOldT",2,0,2);
990 gainedhits =
new TH1F(
"gainedhits",
"gainedhits",2,0,2);
991 gainedhits2 =
new TH1F(
"gainedhits2",
"gainedhits2",30,-0.5,29.5);
992 probXgood =
new TH1F(
"probXgood",
"probXgood",110,0,1.1);
993 probXbad =
new TH1F(
"probXbad",
"probXbad",110,0,1.1);
994 probXdelta =
new TH1F(
"probXdelta",
"probXdelta",110,0,1.1);
995 probXshared =
new TH1F(
"probXshared",
"probXshared",110,0,1.1);
996 probXnoshare =
new TH1F(
"probXnoshare",
"probXnoshare",110,0,1.1);
997 probYgood =
new TH1F(
"probYgood",
"probYgood",110,0,1.1);
998 probYbad =
new TH1F(
"probYbad",
"probYbad",110,0,1.1);
999 probYdelta =
new TH1F(
"probYdelta",
"probYdelta",110,0,1.1);
1000 probYshared =
new TH1F(
"probYshared",
"probYshared",110,0,1.1);
1001 probYnoshare =
new TH1F(
"probYnoshare",
"probYnoshare",110,0,1.1);
1002 TH1::AddDirectory(oldAddDir);
1007 LogTrace(
"TestOutliers") <<
"TestOutliers::endJob";
1009 LogTrace(
"TestOutliers") <<
"outfile written";
1011 LogTrace(
"TestOutliers") <<
"oufile closed";
1012 LogTrace(
"TestOutliers") <<
"exiting TestOutliers::endJob";
double qoverp() const
q/p
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
virtual void analyze(const edm::Event &, const edm::EventSetup &)
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...
std::vector< SimHitIdpr > associateHitId(const TrackingRecHit &thit)
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
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
double lambda() const
Lambda angle.
TH1F * goodlayer_simvecsmall
edm::ParameterSet psetout
TH1F * goodhittype_simvecbig
float probabilityY() const
unsigned short numberOfValidHits() const
number of valid hits found
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=0, const edm::EventSetup *setup=0) 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
const math::XYZTLorentzVectorD & momentum() const
particle info...
TH1F * goodst2gteq4_simvecsize
edm::ESHandle< TrackerGeometry > theG
CLHEP::HepSymMatrix AlgebraicSymMatrix
std::vector< PSimHit > associateHit(const TrackingRecHit &thit)
int charge() const
track electric charge
TH1F * deltahitsAssocLost
TH1F * goodlayer_simvecbig
float probabilityX() const
edm::InputTag trackTagsOld_
T const * get() const
Returns C++ pointer to the item.
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...
value_type const * get() const
Global3DVector GlobalVector
double thetaError() const
error on theta
TH1F * goodbadmergedGained
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.