35 #include <TApplication.h>
42 const char* optfile ) :
48 isGraphicLoaded_(
false),
71 catch(
const string& err ) {
84 cerr<<
"PFRootEventManager::ReadOptions, bad display/viewsize_etaphi tag...using 700/350"
94 cerr<<
"PFRootEventManager::ReadOptions, bad display/viewsize_xy tag...using 700/350"
104 cerr<<
"PFRootEventManager::::ReadOptions, bad display/cluster_attributes tag...using 20 10 2 5"
119 cerr<<
"PFRootEventManager::::ReadOptions, bad display/track_attributes tag...using 103 1 8 8"
130 cerr<<
"PFRootEventManager::::ReadOptions, bad display/gsf_attributes tag...using 105 1 8 8"
141 cerr<<
"PFRootEventManager::::ReadOptions, bad display/gsf_attributes tag...using 106 1 8 8"
150 double attrScale = (
drawHO_) ? 0.8 : 1.0;
153 (
int)clusterAttributes_[2],
154 attrScale*clusterAttributes_[3]);
157 (
int)clusterAttributes_[2],
158 attrScale*clusterAttributes_[3]);
161 (
int)clusterAttributes_[2],
162 attrScale*clusterAttributes_[3]);
165 (
int)clusterAttributes_[2],
166 attrScale*clusterAttributes_[3]);
169 (
int)clusterAttributes_[2],
170 attrScale*clusterAttributes_[3]);
172 (
int)trackAttributes_[1],
175 (
int)trackAttributes_[2],
176 attrScale*trackAttributes_[3]);
179 (
int)gsfAttributes_[1],
182 (
int)gsfAttributes_[2],
183 attrScale*gsfAttributes_[3]);
186 (
int)bremAttributes_[1],
189 (
int)bremAttributes_[2],
190 attrScale*bremAttributes_[3]);
195 std::vector<float> simPartAttributes;
197 simPartAttributes.clear();
198 options_->
GetOpt(
"display",
"simPart_attributes", simPartAttributes);
199 if(simPartAttributes.size() != 3) {
200 cerr<<
"PFRootEventManager::::ReadOptions, bad display/simPart_attributes tag...using 103 1 8 8"
202 simPartAttributes.clear();
203 simPartAttributes.push_back(3);
204 simPartAttributes.push_back(2);
205 simPartAttributes.push_back(0.6);
208 int simColor = (int)simPartAttributes[0];
209 int simLStyle = (int)simPartAttributes[1];
210 float simMSize = attrScale*simPartAttributes[2];
295 for (
int viewType=0;viewType<
NViews;++viewType) {
309 if (!
drawHO_) {zLow = -500.; zUp = +500.; rLow = -300.; rUp = +300.;}
311 displayHist_[
XY] =
new TH2F(
"hdisplayHist_XY",
"", 500, rLow, rUp,
335 for (
int viewType=0;viewType<
NViews;++viewType){
339 displayHist_[viewType]->GetYaxis()->SetTitleOffset(1.2);
341 displayHist_[viewType]->GetYaxis()->SetLabelSize(0.045);
342 displayHist_[viewType]->GetXaxis()->SetLabelSize(0.045);
374 cout <<
"End of DisplayManager::createCanvas()"<<endl;
419 for (
int viewType=0;viewType<
NViews;viewType++){
429 }
else if (clusType==1) {
435 }
else if (clusType==2) {
440 }
else if (clusType==3) {
451 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
457 if (
cos(phi0 - phi) < 0.)
463 xyzPos.
z(),sign*xyzPos.Rho(),
465 }
else if (clusType==1) {
469 xyzPos.
z(),sign*xyzPos.Rho(),
471 }
else if (clusType==2) {
475 xyzPos.
z(),sign*xyzPos.Rho(),
477 }
else if (clusType==3) {
481 xyzPos.
z(),sign*xyzPos.Rho(),
488 xyzPos.
z(),sign*xyzPos.Rho(),
491 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
504 else if (clusType==3) {
519 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
541 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
563 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
574 const std::vector<reco::PFTrajectoryPoint>& points,
575 int ident,
double pt,
double phi0,
double sign,
bool displayInitial,
580 bool debug_createGpart =
false;
582 for (
int viewType=0;viewType<
NViews;++viewType) {
587 xPos.reserve( points.size() );
589 yPos.reserve( points.size() );
591 for(
unsigned i=0;
i<points.size();
i++) {
593 if( !points[
i].isValid() )
continue;
597 double eta = xyzPos.Eta();
598 double phi = xyzPos.Phi();
617 xPos.push_back(xyzPos.X());
618 yPos.push_back(xyzPos.Y());
621 xPos.push_back(xyzPos.Z());
622 yPos.push_back(sign*xyzPos.Rho());
627 xPos.push_back( eta );
628 yPos.push_back( phi );
633 if (viewType ==
EPE && debug_createGpart) {
634 cout <<
" display PFsim eta/phi view ECAL" << endl;
635 cout <<
" nb of points for display " << xPos.size() << endl;
636 for(
unsigned i=0;
i<xPos.size();
i++) {
637 cout <<
" point " <<
i <<
" x/y " << xPos[
i] <<
"/" << yPos[
i]<< endl;
647 xPos.size(),&xPos[0],&yPos[0],
653 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
663 int layer = rh.
layer();
695 cerr<<
"DisplayManager::createGRecHit : manage other layers."
696 <<
" GRechit notcreated."<<endl;
703 for(
int viewType=0;viewType<
NViews;++viewType) {
711 if( viewType ==
EPH &&
727 if (
cos(phi0 - rhphi) < 0.) sign = -1.;
744 const std::vector< math::XYZPoint >& corners = rh.
getCornersXYZ();
745 assert(corners.size() == 4);
746 double propfact = 0.95;
749 for (
unsigned jc=0; jc<4; ++jc ) {
751 phiSize[jc] = rhphi-corners[jc].Phi();
752 etaSize[jc] = rheta-corners[jc].Eta();
753 if ( phiSize[jc] > 1. ) phiSize[jc] -= 2.*
TMath::Pi();
754 if ( phiSize[jc] < -1. ) phiSize[jc]+= 2.*
TMath::Pi();
756 phiSize[jc] *= propfact;
757 etaSize[jc] *= propfact;
761 x[jc] = cornerposxyz.X();
762 y[jc] = cornerposxyz.Y();
763 z[jc] = cornerposxyz.Z();
764 r[jc] = sign*cornerposxyz.Rho();
765 eta[jc] = rheta - etaSize[jc];
766 phi[jc] = rhphi - phiSize[jc];
786 y[jc] - centreXYZrot.Y(),
790 phi[jc] - centreXYZrot.Phi(),
795 xprop[jc] = centreXYZrot.X() + centertocorner.X()*ampl;
796 yprop[jc] = centreXYZrot.Y() + centertocorner.Y()*ampl;
798 etaprop[jc] = centreXYZrot.Eta() + centertocornerep.X()*ampl;
799 phiprop[jc] = centreXYZrot.Phi() + centertocornerep.Y()*ampl;
813 if(fabs(phiSize[1]-phiSize[0]) > 0.0001) {
814 if (viewType ==
XY) {
817 }
else if (viewType ==
RZ) {
822 if (viewType ==
XY) {
825 }
else if (viewType ==
RZ) {
834 x[i1] *= 1+signx*ampl/2.;
835 x[i2] *= 1+signx*ampl/2.;
836 y[i1] *= 1+signx*ampl/2.;
837 y[i2] *= 1+signx*ampl/2.;
838 z[i1] *= 1+signx*ampl/2.;
839 z[i2] *= 1+signx*ampl/2.;
840 r[i1] *= 1+signx*ampl/2.;
841 r[i2] *= 1+signx*ampl/2.;
860 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,x,y,color,
"f")));
863 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,x,y,color,
"l")));
867 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,xprop,yprop,color,
"f")));
874 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,z,r,color,
"f")));
879 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,eta,phi,color,
"l")));
882 etaprop[4]=etaprop[0];
883 phiprop[4]=phiprop[0];
884 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,etaprop,phiprop,color,
"f")));
892 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,eta,phi,color,
"l")));
895 etaprop[4]=etaprop[0];
896 phiprop[4]=phiprop[0];
897 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,etaprop,phiprop,color,
"f")));
906 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,eta,phi,color,
"l")));
909 etaprop[4]=etaprop[0];
910 phiprop[4]=phiprop[0];
911 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,etaprop,phiprop,color,
"f")));
927 const std::vector<reco::PFTrajectoryPoint>& points,
928 int ident,
double pt,
double phi0,
double sign,
bool displayInitial,
935 for (
int viewType=0;viewType<
NViews;++viewType) {
939 xPos.reserve( points.size() );
941 yPos.reserve( points.size() );
943 for(
unsigned i=0;
i<points.size();
i++) {
944 if( !points[
i].isValid() )
continue;
950 double eta = xyzPos.Eta();
951 double phi = xyzPos.Phi();
953 if( !displayInitial &&
966 xPos.push_back(xyzPos.X());
967 yPos.push_back(xyzPos.Y());
970 xPos.push_back(xyzPos.Z());
971 yPos.push_back(sign*xyzPos.Rho());
976 xPos.push_back( eta );
977 yPos.push_back( phi );
990 xPos.size(),&xPos[0],&yPos[0],pt,
993 else if (kfgsfbrem==1) {
998 xPos.size(),&xPos[0],&yPos[0],pt,
1001 else if (kfgsfbrem==2) {
1007 xPos.size(),&xPos[0],&yPos[0],pt,
1010 graphicMap_.insert(pair<int,GPFBase *> (ident, gt));
1029 std::cerr<<
"DisplayManager::no event matching criteria"<<std::endl;
1046 std::cout<<
" no Graphic Objects to draw"<<std::endl;
1050 for (
int viewType=0;viewType<
NViews;++viewType) {
1059 std::multimap<int,GPFBase *>::iterator
p;
1064 int view = p->second->getView();
1092 if (!noRedraw)
break;
1094 if(p->second->getEnergy() >
hitEnMin_) {
1140 if (view ==
EPH || view ==
EPE || view ==
EHO) {
1146 default :
std::cout<<
"DisplayManager::displayAll()-- unknown object "<<std::endl;
1160 std::multimap<int,GPFBase *>::iterator
p;
1169 p->second->setNewStyle();
1170 p->second->setNewSize();
1171 p->second->setColor();
1176 p->second->setColor();
1177 p->second->setNewStyle();
1178 p->second->setNewSize();
1193 double zLow = -500.;
1197 double etarng=(
drawHO_) ? 1.19 : 1.39;
1198 double ratio =(
drawHO_) ? 1.15 : 0.90;
1199 double scal = (
drawHO_) ? 1.00 : 0.85;
1207 for (
int viewType=0;viewType<
NViews;++viewType) {
1223 etaLeg.SetTextSize( (
drawHO_) ? 0.03 : 0.02);
1227 int nEtas = int((etaMax - etaMin)/0.2) + 1;
1228 for (
int iEta = 0; iEta <= nEtas; iEta++) {
1229 float eta = etaMin + iEta*etaBin;
1230 float r = ratio*rUp;
1232 etaImpact.SetPtEtaPhi(r, eta, 0.);
1233 etaLeg.SetTextAlign(21);
1234 if (eta <= -etarng) {
1235 etaImpact.SetXYZ(0.,scal*zLow*
tan(etaImpact.Theta()),scal*zLow);
1236 etaLeg.SetTextAlign(31);
1237 }
else if (eta >= etarng) {
1238 etaImpact.SetXYZ(0.,scal*zUp*
tan(etaImpact.Theta()),scal*zUp);
1239 etaLeg.SetTextAlign(11);
1242 if (fabs(eta)<1.29) {
1243 etaLeg.SetTextSize(0.030);
1245 etaLeg.SetTextSize(0.022);
1248 l.DrawLine(0., 0., etaImpact.Z(), etaImpact.Perp());
1249 etaLeg.DrawLatex(1.0*etaImpact.Z(), etaImpact.Perp(), Form(
"%2.1f", eta));
1268 while (!ok && ientry<em_->ev_->size() ) {
1280 std::cerr<<
"DisplayManager::dislayNextInteresting : no event matching criteria"<<std::endl;
1292 bool toInitial=
true;
1304 multimap<int,pair <int,int > >::const_iterator
p;
1308 int ident=(p->second).
first;
1314 cout<<
"DisplayManager::displayPFBlock :not found"<<endl;
1319 typedef std::multimap<int,GPFBase *>::const_iterator iter;
1323 std::cout<<
"pas d'objet avec cet ident: "<<ident<<std::flush<<std::endl;
1327 while (p != result.second) {
1328 int view=p->second->getView();
1331 if (toInitial) p->second->setInitialColor();
1332 else p->second->setColor(color);
1357 std ::cout<<
"DisplayManager::findAndDraw :object Type unknown"<<std::endl;
1366 bool toInitial=
false;
1382 multimap<int, pair <int,int > >::const_iterator
p;
1384 int id=(p->second).
first;
1387 elemNb=(p->second).
second;
1392 std::cout<<
"this object is element "<<elemNb<<
" of PFblock nb "<<blockNb<<std::endl;
1393 assert( blockNb < static_cast<int>(
em_->
blocks().size()) );
1424 double maxe = -9999;
1454 cerr<<
"DisplayManager::getMaxE : manage other layers"<<endl;
1458 for(
unsigned i=0;
i<vec->size();
i++) {
1459 if( (*vec)[
i].layer() != layer )
continue;
1460 if( (*vec)[
i].energy() > maxe)
1461 maxe = (*vec)[
i].energy();
1507 if(!myGenEvent)
return;
1508 for ( HepMC::GenEvent::particle_const_iterator piter = myGenEvent->particles_begin();
1509 piter != myGenEvent->particles_end();
1520 if ( !p->production_vertex() && p->pdg_id() == 2212 )
return;
1522 int partId = p->pdg_id();
1525 std::string latexStringName;
1528 int barcode = p->barcode();
1544 double eta = momentum1.eta();
1545 if ( eta > +10. ) eta = +10.;
1546 if ( eta < -10. ) eta = -10.;
1548 double phi = momentum1.phi();
1550 double pt = momentum1.pt();
1551 double e = momentum1.e();
1563 if(p->production_vertex() &&
1564 p->production_vertex()->particles_in_size() ) {
1566 *(p->production_vertex()->particles_in_const_begin());
1575 int barcodeMother = mother->barcode();
1577 mother->momentum().py(),
1578 mother->momentum().pz(),
1579 mother->momentum().e());
1580 double etaMother = momentumMother.eta();
1581 if ( etaMother > +10. ) etaMother = +10.;
1582 if ( etaMother < -10. ) etaMother = -10.;
1583 double phiMother = momentumMother.phi();
1589 x[0]=etaMother;x[1]=
eta;
1590 y[0]=phiMother;y[1]=
phi;
1592 for (
int view = 2; view< modnViews; view++) {
1596 e,pt,barcode,barcodeMother,
1598 name,latexStringName);
1599 graphicMap_.insert(pair<int,GPFBase *> (genPartId, gp));
1603 for (
int view = 2; view< modnViews; view++) {
1609 name, latexStringName);
1610 graphicMap_.insert(pair<int,GPFBase *> (genPartId, gp));
1673 for (
int ibl=0;ibl<
size;ibl++) {
1680 std::multimap<double, unsigned> ecalElems;
1688 if (ecalElems.size()==0) {
1704 for (
int ibl=0;ibl<
size;ibl++) {
1725 assert( !trackref.
isNull() );
1733 assert( !clusref.
isNull() );
1741 assert( !clusref.
isNull() );
1749 assert( !clusref.
isNull() );
1757 assert( !clusref.
isNull() );
1766 assert( !clusref.
isNull() );
1775 assert( !clusref.
isNull() );
1783 assert( !clusref.
isNull() );
1794 assert( !trackref.
isNull() );
1812 assert( !scref.
isNull() );
1818 std::cout<<
"unknown PFBlock element of type "<<type<<std::endl;
1821 pair <int, int> idElem;
1823 idElem.second=(*iter).index();
1824 if (ident != -1)
blockIdentsMap_.insert(pair<
int,pair <int,int> > (ibl,idElem));
1847 double maxe = maxee>maxeh ? maxee : maxeh;
1849 int color = TColor::GetColor(210,210,210);
1850 int seedcolor = TColor::GetColor(145,145,145);
1851 int specialcolor = TColor::GetColor(255,140,0);
1854 int rhcolor =
color;
1860 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1869 int rhcolor =
color;
1875 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1885 int rhcolor =
color;
1891 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1901 int rhcolor =
color;
1907 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1916 int rhcolor =
color;
1922 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1931 int rhcolor =
color;
1937 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1952 std::vector<reco::PFRecTrack>::iterator itRecTrack;
1957 double pt = tpinitial.
momentum().Pt();
1961 = itRecTrack->trajectoryPoint(itRecTrack->nTrajectoryMeasurements() +
1967 const std::vector<reco::PFTrajectoryPoint>& points =
1968 itRecTrack->trajectoryPoints();
1975 createGTrack(*itRecTrack,points,recTrackId, pt, phi0, sign,
false,linestyle);
1990 std::vector<reco::GsfPFRecTrack>::iterator itRecTrack;
1995 double pt = tpinitial.
momentum().Pt();
1999 = itRecTrack->trajectoryPoint(itRecTrack->nTrajectoryMeasurements() +
2005 const std::vector<reco::PFTrajectoryPoint>& points =
2006 itRecTrack->trajectoryPoints();
2012 createGTrack(*itRecTrack,points,recTrackId, pt, phi0, sign,
false,linestyle,1);
2015 std::vector<reco::PFBrem> brems=itRecTrack->PFRecBrem();
2016 unsigned nbrems=brems.size();
2017 for(
unsigned ibrem=0;ibrem<nbrems;++ibrem)
2019 unsigned indTrajPoint=brems[ibrem].indTrajPoint();
2020 if(indTrajPoint==99)
continue;
2021 double signBrem = 1. ;
2022 int linestyleBrem = brems[ibrem].algoType();
2026 unsigned indexBrem= ind*40+brems[ibrem].indTrajPoint();
2034 std::vector<reco::PFTrajectoryPoint> pointsBrem;
2036 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[0]);
2037 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[1]);
2040 pointsBrem.push_back(itRecTrack->trajectoryPoint(indTrajPoint));
2042 unsigned ntp=brems[ibrem].trajectoryPoints().size();
2043 for(
unsigned itp=2;itp<ntp;++itp)
2045 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[itp]);
2048 double deltaP=brems[ibrem].DeltaP();
2050 = brems[ibrem].trajectoryPoint(brems[ibrem].nTrajectoryMeasurements() +
2053 if (
cos(phi0 - tpatecalbrem.
momentum().Phi()) < 0.)
2056 createGTrack(brems[ibrem],pointsBrem,recTrackIdBrem,deltaP,phi0,signBrem,
false,linestyleBrem,2);
2070 for(
unsigned i=0;
i<simParticlesVSize;
i++) {
2077 double pt = tpinitial.
momentum().Pt();
2090 const std::vector<reco::PFTrajectoryPoint>& points =
2096 case 22: indexMarker=0;
break;
2097 case 11: indexMarker=1;
break;
2098 case 13: indexMarker=2;
break;
2100 case 321: indexMarker=3;
break;
2101 case 211: indexMarker=4;
break;
2102 case 2212: indexMarker=5;
break;
2103 case 2112: indexMarker=6;
break;
2104 default: indexMarker=7;
break;
2107 bool displayInitial=
true;
2108 if( ptc.
motherId() < 0 ) displayInitial=
false;
2110 createGPart(ptc, points,partId, pt, phi0, sign, displayInitial,indexMarker);
2128 for(
unsigned i=0;
i<(*rechits).size();
i++) {
2130 double energy = (*rechits)[
i].energy();
2132 if(energy > maxe ) {
2134 maxrh = &((*rechits)[
i]);
2146 double phisize = -1;
2147 double etasize = -1;
2148 maxrh->
size(phisize, etasize);
2157 displayHist_[
EPE]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2158 displayHist_[
EPE]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2164 displayHist_[
EPH]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2165 displayHist_[
EPH]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2171 displayHist_[
EHO]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2172 displayHist_[
EHO]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2184 cerr<<
"no GenEvent"<<endl;
2190 cerr<<
"no particle with barcode "<<barcode<<endl;
2195 particle->momentum().py(),
2196 particle->momentum().pz(),
2197 particle->momentum().e());
2199 double eta = momentum.Eta();
2200 double phi = momentum.phi();
2202 double phisize = 0.05;
2203 double etasize = 0.05;
2209 displayHist_[
EPE]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2210 displayHist_[
EPE]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2216 displayHist_[
EPH]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2217 displayHist_[
EPH]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2223 displayHist_[
EHO]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
2224 displayHist_[
EHO]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
2234 if( directory.empty() ) {
2235 directory =
"Event_";
2241 string mkdir =
"mkdir "; mkdir +=
directory;
2242 int code = system( mkdir.c_str() );
2245 cerr<<
"cannot create directory "<<directory<<endl;
2249 cout<<
"Event display printed in directory "<<directory<<endl;
2253 for(
unsigned iView=0; iView<
displayView_.size(); iView++) {
2261 string eps =
name; eps +=
".eps";
2264 string png =
name; png +=
".png";
2270 ofstream
out( txt.c_str() );
2272 cerr<<
"cannot open "<<txt<<endl;
2283 std::multimap<int,GPFBase *>::iterator
p;
2324 std::cout<<
"genParticle "<<name<<
" with barcode "<<barcode<<std::flush<<std::endl;
2326 if (barcodeMother) {
2328 std::cout<<
"mother particle with barcode "<<barcodeMother<<std::flush<<std::endl;
void printGenParticleInfo(std::string name, int barcode, int barcodeMother)
PFLayer::Layer layer() const
cluster layer, see PFLayer.h in this directory
void drawGObject(int ident, int color, bool toInitialColor)
const reco::PFBlockCollection & blocks() const
std::auto_ptr< reco::PFBlockCollection > pfBlocks_
reconstructed pfblocks
const unsigned int SHIFTID
void displayAll(bool noRedraw=true)
const math::XYZPoint & position() const
cluster centroid position
std::string getGenParticleName(int partId, std::string &latexStringName) const
get name of genParticle
reconstructed track used as an input to particle flow
bool findBadBremsId(int ident)
PFClusterAlgo clusterAlgoHFEM_
clustering algorithm for HF, electro-magnetic layer
std::multimap< int, GPFBase * > graphicMap_
PFClusterAlgo clusterAlgoHO_
clustering algorithm for HO
General option file parser.
double threshBarrel() const
getters -------------------------------------------------——
std::vector< TCanvas * > displayView_
vector of canvas for x/y or r/z display
void setNewAttrToSimParticles()
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
GsfPFRecTrackRef GsftrackRefPF() const
std::vector< float > gsfAttributes_
TAttMarker * genPartPattern_
void createGCluster(const reco::PFCluster &cluster, int ident, double phi0=0.)
const math::XYZPoint & position() const
cartesian position (x, y, z)
fwlite::ChainEvent * ev_
NEW: input event.
std::auto_ptr< reco::PFClusterCollection > clustersECAL_
TAttMarker * gsfPatternM_
TAttLine * trackPatternL_
void drawWithNewGraphicAttributes()
reco::PFRecHitCollection rechitsHFHAD_
void findBlock(int ident)
void lookForMaxRecHit(bool ecal)
look for rechit with max energy in ecal or hcal.
std::vector< TAttMarker * > simPartPatternM_
void lookForGenParticle(unsigned barcode)
look for particle with index i in MC truth.
std::vector< PFRecHit > PFRecHitCollection
collection of PFRecHit objects
TAttMarker * clusPatternhfem_
std::auto_ptr< reco::PFClusterCollection > clustersHCAL_
PFClusterAlgo clusterAlgoECAL_
reco::PFRecTrackCollection recTracks_
unsigned int indTrajPoint() const
std::vector< float > trackAttributes_
TAttMarker * trackPatternM_
reco::PFRecHitCollection rechitsPS_
double z() const
z coordinate of cluster centroid
void createGPart(const reco::PFSimParticle &ptc, const std::vector< reco::PFTrajectoryPoint > &points, int ident, double pt, double phi0, double sign, bool displayInitial, int markerIndex)
TAttMarker * clusPSPattern_
bool GetOpt(const char *tag, const char *key, std::vector< T > &values) const
reads a vector of T
TAttMarker * simPartPatternPi_
void displayPFBlock(int blockNb)
reco::PFRecHitCollection rechitsHCAL_
PFLayer::Layer layer() const
rechit layer
U second(std::pair< T, U > const &p)
reco::PFSimParticleCollection trueParticles_
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
const std::vector< math::XYZPoint > & getCornersXYZ() const
rechit corners
TAttMarker * clusPatternecal_
void print(std::ostream &out=std::cout, int maxNLines=-1) const
print information
TAttMarker * bremPatternM_
bool isNull() const
Checks for null.
TBox frontFaceECALRZ_
ECAL in RZ view.
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
std::vector< int > selectedGObj_
graphic object containers
std::auto_ptr< reco::PFClusterCollection > clustersPS_
void enableDrawBrem(bool state)
TAttMarker * simPartPatternProton_
Point of closest approach from beam axis (initial point in the case of PFSimParticle) ...
DisplayManager(PFRootEventManager *em, const char *optfile)
void printDisplay(const char *directory="") const
Cos< T >::type cos(const T &t)
std::vector< int > badBremsId_
std::vector< float > bremAttributes_
void displayEvent(int run, int lumi, int event)
TEllipse frontFaceHOXY_
HO in XY view.
Tan< T >::type tan(const T &t)
TAttMarker * simPartPatternPhoton_
PFClusterAlgo clusterAlgoHCAL_
clustering algorithm for HCAL
double threshEndcap() const
get endcap threshold
TAttMarker * simPartPatternElec_
std::vector< float > clusterAttributes_
void size(double &deta, double &dphi) const
SuperClusterRef superClusterRef() const
TAttMarker * clusPattern_
const reco::PFTrajectoryPoint & extrapolatedPoint(unsigned layerid) const
reco::GsfPFRecTrackCollection gsfrecTracks_
std::auto_ptr< reco::PFClusterCollection > clustersHO_
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void createGTrack(reco::PFRecTrack &tr, const std::vector< reco::PFTrajectoryPoint > &points, int ident, double pt, double phi0, double sign, bool displayInitial, int linestyle, int kfgsfbrem=0)
void createGRecHit(reco::PFRecHit &rh, int ident, double maxe, double phi0=0., int color=4)
virtual bool processEntry(int entry)
process one entry (pass the TTree entry)
reco::PFRecHitCollection rechitsHFEM_
true particle for particle flow
TAttMarker * simPartPatternMuon_
void displayNextInteresting(int ientry)
std::multimap< int, std::pair< int, int > > blockIdentsMap_
const std::vector< reco::PFTrajectoryPoint > & trajectoryPoints() const
virtual bool processEvent(int run, int lumi, int event)
process one event (pass the CMS event number)
const math::XYZPoint & position() const
is seed ?
reco::PFRecHitCollection rechitsHO_
const math::XYZTLorentzVector & momentum() const
4-momenta quadrivector
const reco::PFTrajectoryPoint & trajectoryPoint(unsigned index) const
void loadGraphicObjects()
const HepMC::GenEvent * GetEvent() const
std::auto_ptr< reco::PFClusterCollection > clustersHFEM_
std::auto_ptr< reco::PFClusterCollection > clustersHFHAD_
XYZPointD XYZPoint
point in space with cartesian internal representation
static const float outerRadius(PFGeometry::Layers_t layer)
return outer radius of a given layer
TEllipse frontFaceECALXY_
ECAL in XY view.
key_type key() const
Accessor for product key.
void enableDrawPFBlock(bool state)
static const float innerRadius(PFGeometry::Layers_t layer)
return inner radius of a given layer
PFClusterAlgo clusterAlgoPS_
clustering algorithm for PS
double getMaxE(int layer) const
edm::HepMCProduct MCTruth_
TEllipse frontFaceHCALXY_
HCAL in XY view.
IO * options_
options file parser
double energy() const
rechit energy
void readOptions(const char *file)
void findAndDraw(int ident)
TAttLine * simPartPatternL_
void createGGenParticle(HepMC::GenParticle *p)
GsfPFRecTrackRef GsftrackRefPF() const
static const float innerZ(PFGeometry::Layers_t layer)
return inner position along z axis of a given layer
virtual ~DisplayManager()
reco::PFRecHitCollection rechitsECAL_
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
PFClusterAlgo clusterAlgoHFHAD_
clustering algorithm for HF, hadronic layer
ROOT interface to particle flow package.
TAttMarker * simPartPatternNeutron_
unsigned color(unsigned rhi) const
std::vector< TH2F * > displayHist_
support histogram for x/y or r/z display.
tuple size
Write out results.
TAttMarker * simPartPatternK_
TAttMarker * simPartPatternDefault_
std::vector< int > viewSize_
display pad xy size for (x,y) or (r,z) display
std::vector< int > viewSizeEtaPhi_
display pad xy size for eta/phi view
TAttMarker * clusPatternho_