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";
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
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...
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
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
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
const math::XYZTLorentzVectorD & momentum() const
particle info...
TH1F * goodst2gteq4_simvecsize
edm::ESHandle< TrackerGeometry > theG
std::vector< PSimHit > associateHit(const TrackingRecHit &thit)
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
int charge() const
track electric charge
TH1F * deltahitsAssocLost
TH1F * goodlayer_simvecbig
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...
virtual void endJob() override
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.