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();
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()),
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";
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();
587 DetId id = (*itHit)->geographicalId();
588 if (
id.subdetId()==3) layerId = ((
TIBDetId)(
id)).layer();
589 if (
id.subdetId()==5) layerId = ((
TOBDetId)(
id)).layer();
590 if (
id.subdetId()==1) layerId = ((
PXBDetId)(
id)).layer();
591 if (
id.subdetId()==4) layerId = ((
TIDDetId)(
id)).wheel();
592 if (
id.subdetId()==6) layerId = ((
TECDetId)(
id)).wheel();
593 if (
id.subdetId()==2) layerId = ((
PXFDetId)(
id)).disk();
594 layerval = subdetId*10+layerId;
597 GlobalPoint gpos =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal((*itHit)->localPosition());
613 double energyLoss_ = 0.;
614 unsigned int monoId = 0;
615 std::vector<double> energyLossM;
616 std::vector<double> energyLossS;
618 if (assSimHits.size()==0)
continue;
620 std::vector<unsigned int> trackIds;
624 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
626 unsigned int tId =
m->trackId();
627 if (
find(trackIds.begin(),trackIds.end(),tId)==trackIds.end()) trackIds.push_back(tId);
628 LogTrace(
"TestOutliers") <<
"id=" << tId;
629 if (
m->energyLoss()>energyLoss_) {
631 energyLoss_ =
m->energyLoss();
634 if (monoId==0) monoId =
m->detUnitId();
635 if (monoId ==
m->detUnitId()){
636 energyLossM.push_back(
m->energyLoss());
639 energyLossS.push_back(
m->energyLoss());
643 energyLossM.push_back(
m->energyLoss());
646 unsigned int nIds = trackIds.size();
650 posxy->Fill(fabs(gpos.
x()),fabs(gpos.
y()));
651 poszr->Fill(fabs(gpos.
z()),
sqrt(gpos.
x()*gpos.
x()+gpos.
y()*gpos.
y()));
658 bool ioniOnly =
true;
659 unsigned int idc = 0;
660 for (
size_t jj=0;
jj<tpids.size();
jj++){
661 idc +=
std::count(trackIds.begin(),trackIds.end(),tpids[
jj]);
663 if (idc==trackIds.size()) {
666 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin()+1;
m<assSimHits.end();
m++){
667 if ((
m->processType()!=7&&
m->processType()!=8&&
m->processType()!=9)&&
abs(
m->particleType())!=11){
672 if (ioniOnly&&!shared){
673 LogTrace(
"TestOutliers") <<
"delta";
679 if (clustersize>=4) {
709 if (energyLossM.size()>1) {
710 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
715 if (energyLossM.size()>1&&energyLossS.size()<=1) {
716 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
719 else if (energyLossS.size()>1&&energyLossM.size()<=1) {
720 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
723 else if (energyLossS.size()>1&&energyLossM.size()>1) {
724 sort(energyLossM.begin(),energyLossM.end(),greater<double>());
725 sort(energyLossS.begin(),energyLossS.end(),greater<double>());
726 energyLossM[1]/energyLossM[0] > energyLossS[1]/energyLossS[0]
732 LogTrace(
"TestOutliers") <<
"before merged";
735 LogTrace(
"TestOutliers") <<
"assSimHits.size()=" << assSimHits.size();
736 if ( (assSimHits.size()>1 && tmp==0) ||
737 (assSimHits.size()>2 && tmp!=0) ) {
744 for(std::vector<PSimHit>::const_iterator
m=assSimHits.begin();
m<assSimHits.end();
m++){
745 unsigned int tId =
m->trackId();
746 LogTrace(
"TestOutliers") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss()
747 <<
" proc=" <<
m->processType() <<
" part=" <<
m->particleType();
748 if (
find(tpids.begin(),tpids.end(),tId)==tpids.end())
continue;
749 if (
m->processType()==2) {
755 GlobalPoint gps =
theG->idToDet((*itHit)->geographicalId())->surface().toGlobal(
m->localPosition());
757 ROOT::Math::SVector<double,3>
delta;
758 delta[0]=gpos.
x()-gps.
x();
759 delta[1]=gpos.
y()-gps.
y();
760 delta[2]=gpos.
z()-gps.
z();
761 LogTrace(
"TestOutliers") << delta <<
" " << ger ;
762 double mpull =
sqrt(delta[0]*delta[0]/ger[0][0]+delta[1]*delta[1]/ger[1][1]+delta[2]*delta[2]/ger[2][2]);
763 LogTrace(
"TestOutliers") <<
"hit pull=" << mpull;
767 LogTrace(
"TestOutliers") <<
"end merged";
777 if ((hittypeval!=3 && assSimHits.size()<2)||(hittypeval==3 && assSimHits.size()<3)){
786 LogTrace(
"TestOutliers") <<
"out good";
790 LogTrace(
"TestOutliers") <<
"lost good";
794 LogTrace(
"TestOutliers") <<
"gained good";
801 if (ioniOnly&&!shared) {
807 }
else if(!ioniOnly&&!shared) {
820 LogTrace(
"TestOutliers") <<
"out merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
826 LogTrace(
"TestOutliers") <<
"lost merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
832 LogTrace(
"TestOutliers") <<
"gained merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
834 LogTrace(
"TestOutliers") <<
"merged, ioniOnly=" << ioniOnly <<
" shared=" << shared;
850 LogTrace(
"TestOutliers") <<
"out bad";
854 LogTrace(
"TestOutliers") <<
"lost bad";
858 LogTrace(
"TestOutliers") <<
"gained bad";
869 LogTrace(
"TestOutliers") <<
"Out->pt=" << trackOut->
pt() <<
" Old->pt=" << trackOld->
pt()
870 <<
" tp->pt=" <<
sqrt(tpr->momentum().perp2())
873 <<
" fracOut=" << fracOut
875 LogTrace(
"TestOutliers") <<
"track with gained hits";
881 LogTrace(
"TestOutliers") <<
"end track old #" <<
j;
884 for (
unsigned int k=0;
k<tracksOut->size();++
k) {
885 if (
find(outused.begin(),outused.end(),
k)==outused.end() ) {
887 bool outAssoc = recSimCollOut.find(trackOut) != recSimCollOut.end();
906 const bool oldAddDir = TH1::AddDirectoryStatus();
907 TH1::AddDirectory(
true);
908 file =
new TFile(
out.c_str(),
"recreate");
909 histoPtOut =
new TH1F(
"histoPtOut",
"histoPtOut",100,-10,10);
910 histoPtOld =
new TH1F(
"histoPtOld",
"histoPtOld",100,-10,10);
911 histoQoverpOut =
new TH1F(
"histoQoverpOut",
"histoQoverpOut",250,-25,25);
912 histoQoverpOld =
new TH1F(
"histoQoverpOld",
"histoQoverpOld",250,-25,25);
913 histoPhiOut =
new TH1F(
"histoPhiOut",
"histoPhiOut",250,-25,25);
914 histoPhiOld =
new TH1F(
"histoPhiOld",
"histoPhiOld",250,-25,25);
915 histoD0Out =
new TH1F(
"histoD0Out",
"histoD0Out",250,-25,25);
916 histoD0Old =
new TH1F(
"histoD0Old",
"histoD0Old",250,-25,25);
917 histoDzOut =
new TH1F(
"histoDzOut",
"histoDzOut",250,-25,25);
918 histoDzOld =
new TH1F(
"histoDzOld",
"histoDzOld",250,-25,25);
919 histoLambdaOut =
new TH1F(
"histoLambdaOut",
"histoLambdaOut",250,-25,25);
920 histoLambdaOld =
new TH1F(
"histoLambdaOld",
"histoLambdaOld",250,-25,25);
921 deltahits =
new TH1F(
"deltahits",
"deltahits",80,-40,40);
922 deltahitsOK =
new TH1F(
"deltahitsOK",
"deltahitsOK",20,0,20);
923 deltahitsNO =
new TH1F(
"deltahitsNO",
"deltahitsNO",20,0,20);
924 okcutsOut =
new TH1F(
"okcutsOut",
"okcutsOut",2,-0.5,1.5);
925 okcutsOld =
new TH1F(
"okcutsOld",
"okcutsOld",2,-0.5,1.5);
926 tracks =
new TH1F(
"tracks_",
"tracks_",2,-0.5,1.5);
927 goodbadhits =
new TH1F(
"goodbadhits",
"goodbadhits",2,-0.5,1.5);
928 process =
new TH1F(
"process",
"process",20,-0.5,19.5);
929 goodcluster =
new TH1F(
"goodcluster",
"goodcluster",40,-0.5,39.5);
930 goodprocess =
new TH1F(
"goodprocess",
"goodprocess",20,-0.5,19.5);
931 badcluster =
new TH1F(
"badcluster",
"badcluster",40,-0.5,39.5);
932 badprocess =
new TH1F(
"badprocess",
"badprocess",20,-0.5,19.5);
933 goodhittype =
new TH1F(
"goodhittype",
"goodhittype",5,-0.5,4.5);
934 goodlayer =
new TH1F(
"goodlayer",
"goodlayer",70,-0.5,69.5);
936 goodlayer_clgteq4 =
new TH1F(
"goodlayer_clgteq4",
"goodlayer_clgteq4",70,-0.5,69.5);
937 goodhittype_cllt4 =
new TH1F(
"goodhittype_cllt4",
"goodhittype_cllt4",5,-0.5,4.5);
938 goodlayer_cllt4 =
new TH1F(
"goodlayer_cllt4",
"goodlayer_cllt4",70,-0.5,69.5);
939 badhittype =
new TH1F(
"badhittype",
"badhittype",5,-0.5,4.5);
940 badlayer =
new TH1F(
"badlayer",
"badlayer",70,-0.5,69.5);
941 posxy =
new TH2F(
"posxy",
"posxy",1200,0,120,1200,0,120);
942 poszr =
new TH2F(
"poszr",
"poszr",3000,0,300,1200,0,120);
955 goodpix_simvecsize =
new TH1F(
"goodpix_simvecsize",
"goodpix_simvecsize",40,-0.5,39.5);
956 goodst1_simvecsize =
new TH1F(
"goodst1_simvecsize",
"goodst1_simvecsize",40,-0.5,39.5);
957 goodst2_simvecsize =
new TH1F(
"goodst2_simvecsize",
"goodst2_simvecsize",40,-0.5,39.5);
958 goodprj_simvecsize =
new TH1F(
"goodprj_simvecsize",
"goodprj_simvecsize",40,-0.5,39.5);
963 goodbadmerged =
new TH1F(
"goodbadmerged",
"goodbadmerged",5,0.5,5.5);
966 energyLoss =
new TH1F(
"energyLoss",
"energyLoss",1000,0,0.1);
967 energyLossMax =
new TH1F(
"energyLossMax",
"energyLossMax",1000,0,0.1);
968 energyLossRatio =
new TH1F(
"energyLossRatio",
"energyLossRatio",100,0,1);
969 nOfTrackIds =
new TH1F(
"nOfTrackIds",
"nOfTrackIds",10,0,10);
970 mergedPull =
new TH1F(
"mergedPull",
"mergedPull",100,0,10);
971 mergedlayer =
new TH1F(
"mergedlayer",
"mergedlayer",70,-0.5,69.5);
972 mergedhittype =
new TH1F(
"mergedhittype",
"mergedhittype",5,-0.5,4.5);
973 mergedcluster =
new TH1F(
"mergedcluster",
"mergedcluster",40,-0.5,39.5);
976 hitsPerTrackLost =
new TH1F(
"hitsPerTrackLost",
"hitsPerTrackLost",40, -0.5, 39.5);
978 hitsPerTrackGained =
new TH1F(
"hitsPerTrackGained",
"hitsPerTrackGained",40, -0.5, 39.5);
980 sizeOut =
new TH1F(
"sizeOut",
"sizeOut",900,-0.5,899.5);
981 sizeOld =
new TH1F(
"sizeOld",
"sizeOld",900,-0.5,899.5);
982 sizeOutT =
new TH1F(
"sizeOutT",
"sizeOutT",900,-0.5,899.5);
983 sizeOldT =
new TH1F(
"sizeOldT",
"sizeOldT",900,-0.5,899.5);
984 countOutA =
new TH1F(
"countOutA",
"countOutA",2,0,2);
985 countOutT =
new TH1F(
"countOutT",
"countOutT",2,0,2);
986 countOldT =
new TH1F(
"countOldT",
"countOldT",2,0,2);
987 gainedhits =
new TH1F(
"gainedhits",
"gainedhits",2,0,2);
988 gainedhits2 =
new TH1F(
"gainedhits2",
"gainedhits2",30,-0.5,29.5);
989 probXgood =
new TH1F(
"probXgood",
"probXgood",110,0,1.1);
990 probXbad =
new TH1F(
"probXbad",
"probXbad",110,0,1.1);
991 probXdelta =
new TH1F(
"probXdelta",
"probXdelta",110,0,1.1);
992 probXshared =
new TH1F(
"probXshared",
"probXshared",110,0,1.1);
993 probXnoshare =
new TH1F(
"probXnoshare",
"probXnoshare",110,0,1.1);
994 probYgood =
new TH1F(
"probYgood",
"probYgood",110,0,1.1);
995 probYbad =
new TH1F(
"probYbad",
"probYbad",110,0,1.1);
996 probYdelta =
new TH1F(
"probYdelta",
"probYdelta",110,0,1.1);
997 probYshared =
new TH1F(
"probYshared",
"probYshared",110,0,1.1);
998 probYnoshare =
new TH1F(
"probYnoshare",
"probYnoshare",110,0,1.1);
999 TH1::AddDirectory(oldAddDir);
1004 LogTrace(
"TestOutliers") <<
"TestOutliers::endJob";
1006 LogTrace(
"TestOutliers") <<
"outfile written";
1008 LogTrace(
"TestOutliers") <<
"oufile closed";
1009 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
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
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
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.