36 #include <TApplication.h>
43 const char* optfile ) :
48 isGraphicLoaded_(
false),
72 catch(
const string& err ) {
80 cerr<<
"PFRootEventManager::ReadOptions, bad display/viewsize_etaphi tag...using 700/350"
90 cerr<<
"PFRootEventManager::ReadOptions, bad display/viewsize_xy tag...using 700/350"
100 cerr<<
"PFRootEventManager::::ReadOptions, bad display/cluster_attributes tag...using 20 10 2 5"
111 cerr<<
"PFRootEventManager::::ReadOptions, bad display/track_attributes tag...using 103 1 8 8"
122 cerr<<
"PFRootEventManager::::ReadOptions, bad display/gsf_attributes tag...using 105 1 8 8"
133 cerr<<
"PFRootEventManager::::ReadOptions, bad display/gsf_attributes tag...using 106 1 8 8"
143 (
int)clusterAttributes_[2],
144 clusterAttributes_[3]);
146 (
int)clusterAttributes_[2],
147 clusterAttributes_[3]);
149 (
int)trackAttributes_[1],
152 (
int)trackAttributes_[2],
153 trackAttributes_[3]);
156 (
int)gsfAttributes_[1],
159 (
int)gsfAttributes_[2],
163 (
int)bremAttributes_[1],
166 (
int)bremAttributes_[2],
172 std::vector<float> simPartAttributes;
173 options_->
GetOpt(
"display",
"simPart_attributes", simPartAttributes);
174 if(simPartAttributes.size() != 3) {
175 cerr<<
"PFRootEventManager::::ReadOptions, bad display/simPart_attributes tag...using 103 1 8 8"
177 simPartAttributes.push_back(4);
178 simPartAttributes.push_back(2);
179 simPartAttributes.push_back(1);
182 int simColor = (int)simPartAttributes[0];
183 int simLStyle = (int)simPartAttributes[1];
184 float simMSize = simPartAttributes[2];
270 for (
int viewType=0;viewType<
NViews;++viewType) {
283 displayHist_[
XY] =
new TH2F(
"hdisplayHist_XY",
"", 500, rLow, rUp,
300 for (
int viewType=0;viewType<
NViews;++viewType){
303 displayHist_[viewType]->GetYaxis()->SetTitleOffset(1.2);
305 displayHist_[viewType]->GetYaxis()->SetLabelSize(0.045);
306 displayHist_[viewType]->GetXaxis()->SetLabelSize(0.045);
364 for (
int viewType=0;viewType<4;viewType++){
381 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
387 if (
cos(phi0 - phi) < 0.)
393 xyzPos.
z(),sign*xyzPos.Rho(),
400 xyzPos.
z(),sign*xyzPos.Rho(),
404 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
426 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
448 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
458 const std::vector<reco::PFTrajectoryPoint>& points,
459 int ident,
double pt,
double phi0,
double sign,
bool displayInitial,
464 bool debug_createGpart =
false;
466 for (
int viewType=0;viewType<4;++viewType) {
469 xPos.reserve( points.size() );
471 yPos.reserve( points.size() );
473 for(
unsigned i=0;
i<points.size();
i++) {
475 if( !points[
i].isValid() )
continue;
479 double eta = xyzPos.Eta();
480 double phi = xyzPos.Phi();
499 xPos.push_back(xyzPos.X());
500 yPos.push_back(xyzPos.Y());
503 xPos.push_back(xyzPos.Z());
504 yPos.push_back(sign*xyzPos.Rho());
508 xPos.push_back( eta );
509 yPos.push_back( phi );
514 if (viewType ==
EPE && debug_createGpart) {
515 cout <<
" display PFsim eta/phi view ECAL" << endl;
516 cout <<
" nb of points for display " << xPos.size() << endl;
517 for(
unsigned i=0;
i<xPos.size();
i++) {
518 cout <<
" point " <<
i <<
" x/y " << xPos[
i] <<
"/" << yPos[
i]<< endl;
528 xPos.size(),&xPos[0],&yPos[0],
534 graphicMap_.insert(pair<int,GPFBase *> (ident, gc));
544 int layer = rh.
layer();
576 cerr<<
"DisplayManager::createGRecHit : manage other layers."
577 <<
" GRechit notcreated."<<endl;
584 for(
int viewType=0;viewType<4;++viewType) {
591 if( viewType ==
EPH &&
596 if( viewType ==
EPE && isHCAL ) {
603 if (
cos(phi0 - rhphi) < 0.) sign = -1.;
620 const std::vector< math::XYZPoint >& corners = rh.
getCornersXYZ();
621 assert(corners.size() == 4);
622 double propfact = 0.95;
625 for (
unsigned jc=0; jc<4; ++jc ) {
627 phiSize[jc] = rhphi-corners[jc].Phi();
628 etaSize[jc] = rheta-corners[jc].Eta();
629 if ( phiSize[jc] > 1. ) phiSize[jc] -= 2.*
TMath::Pi();
630 if ( phiSize[jc] < -1. ) phiSize[jc]+= 2.*
TMath::Pi();
632 phiSize[jc] *= propfact;
633 etaSize[jc] *= propfact;
637 x[jc] = cornerposxyz.X();
638 y[jc] = cornerposxyz.Y();
639 z[jc] = cornerposxyz.Z();
640 r[jc] = sign*cornerposxyz.Rho();
641 eta[jc] = rheta - etaSize[jc];
642 phi[jc] = rhphi - phiSize[jc];
662 y[jc] - centreXYZrot.Y(),
666 phi[jc] - centreXYZrot.Phi(),
671 xprop[jc] = centreXYZrot.X() + centertocorner.X()*ampl;
672 yprop[jc] = centreXYZrot.Y() + centertocorner.Y()*ampl;
674 etaprop[jc] = centreXYZrot.Eta() + centertocornerep.X()*ampl;
675 phiprop[jc] = centreXYZrot.Phi() + centertocornerep.Y()*ampl;
689 if(fabs(phiSize[1]-phiSize[0]) > 0.0001) {
690 if (viewType ==
XY) {
693 }
else if (viewType ==
RZ) {
698 if (viewType ==
XY) {
701 }
else if (viewType ==
RZ) {
731 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,x,y,color,
"f")));
734 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,x,y,color,
"l")));
738 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,xprop,yprop,color,
"f")));
745 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,z,r,color,
"f")));
750 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,eta,phi,color,
"l")));
753 etaprop[4]=etaprop[0];
754 phiprop[4]=phiprop[0];
755 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,etaprop,phiprop,color,
"f")));
761 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,eta,phi,color,
"l")));
764 etaprop[4]=etaprop[0];
765 phiprop[4]=phiprop[0];
766 graphicMap_.insert(pair<int,GPFBase *> (ident,
new GPFRecHit(
this, viewType,ident,&rh,npoints,etaprop,phiprop,color,
"f")));
779 const std::vector<reco::PFTrajectoryPoint>& points,
780 int ident,
double pt,
double phi0,
double sign,
bool displayInitial,
781 int linestyle,
int kfgsfbrem)
787 for (
int viewType=0;viewType<4;++viewType) {
790 xPos.reserve( points.size() );
792 yPos.reserve( points.size() );
794 for(
unsigned i=0;
i<points.size();
i++) {
795 if( !points[
i].isValid() )
continue;
801 double eta = xyzPos.Eta();
802 double phi = xyzPos.Phi();
804 if( !displayInitial &&
817 xPos.push_back(xyzPos.X());
818 yPos.push_back(xyzPos.Y());
821 xPos.push_back(xyzPos.Z());
822 yPos.push_back(sign*xyzPos.Rho());
826 xPos.push_back( eta );
827 yPos.push_back( phi );
840 xPos.size(),&xPos[0],&yPos[0],
pt,
843 else if (kfgsfbrem==1) {
848 xPos.size(),&xPos[0],&yPos[0],
pt,
851 else if (kfgsfbrem==2) {
857 xPos.size(),&xPos[0],&yPos[0],
pt,
860 graphicMap_.insert(pair<int,GPFBase *> (ident, gt));
879 std::cerr<<
"DisplayManager::no event matching criteria"<<std::endl;
893 std::cout<<
" no Graphic Objects to draw"<<std::endl;
897 for (
int viewType=0;viewType<
NViews;++viewType) {
905 std::multimap<int,GPFBase *>::iterator
p;
910 int view = p->second->getView();
933 if (!noRedraw)
break;
981 if (view ==
EPH || view ==
EPE) {
987 default :
std::cout<<
"DisplayManager::displayAll()-- unknown object "<<std::endl;
999 std::multimap<int,GPFBase *>::iterator
p;
1007 p->second->setNewStyle();
1008 p->second->setNewSize();
1009 p->second->setColor();
1014 p->second->setColor();
1015 p->second->setNewStyle();
1016 p->second->setNewSize();
1031 double zLow = -500.;
1039 for (
int viewType=0;viewType<
NViews;++viewType) {
1053 etaLeg.SetTextSize(0.02);
1057 int nEtas = int((etaMax - etaMin)/0.2) + 1;
1058 for (
int iEta = 0; iEta <= nEtas; iEta++) {
1062 etaImpact.SetPtEtaPhi(r, eta, 0.);
1063 etaLeg.SetTextAlign(21);
1065 etaImpact.SetXYZ(0.,0.85*zLow*
tan(etaImpact.Theta()),0.85*zLow);
1066 etaLeg.SetTextAlign(31);
1067 }
else if (eta >= 1.39) {
1068 etaImpact.SetXYZ(0.,0.85*zUp*
tan(etaImpact.Theta()),0.85*zUp);
1069 etaLeg.SetTextAlign(11);
1071 l.DrawLine(0., 0., etaImpact.Z(), etaImpact.Perp());
1072 etaLeg.DrawLatex(etaImpact.Z(), etaImpact.Perp(), Form(
"%2.1f", eta));
1091 while (!ok && ientry<em_->ev_->size() ) {
1103 std::cerr<<
"DisplayManager::dislayNextInteresting : no event matching criteria"<<std::endl;
1115 bool toInitial=
true;
1127 multimap<int,pair <int,int > >::const_iterator
p;
1131 int ident=(p->second).
first;
1137 cout<<
"DisplayManager::displayPFBlock :not found"<<endl;
1142 typedef std::multimap<int,GPFBase *>::const_iterator iter;
1146 std::cout<<
"pas d'objet avec cet ident: "<<ident<<std::flush<<std::endl;
1150 while (p != result.second) {
1151 int view=p->second->getView();
1153 if (toInitial) p->second->setInitialColor();
1154 else p->second->setColor(color);
1179 std ::cout<<
"DisplayManager::findAndDraw :object Type unknown"<<std::endl;
1188 bool toInitial=
false;
1203 multimap<int, pair <int,int > >::const_iterator
p;
1205 int id=(p->second).
first;
1208 elemNb=(p->second).
second;
1213 std::cout<<
"this object is element "<<elemNb<<
" of PFblock nb "<<blockNb<<std::endl;
1214 assert( blockNb < static_cast<int>(
em_->
blocks().size()) );
1244 double maxe = -9999;
1270 cerr<<
"DisplayManager::getMaxE : manage other layers"<<endl;
1274 for(
unsigned i=0;
i<vec->size();
i++) {
1275 if( (*vec)[
i].layer() != layer )
continue;
1276 if( (*vec)[
i].energy() > maxe)
1277 maxe = (*vec)[
i].energy();
1312 if(!myGenEvent)
return;
1313 for ( HepMC::GenEvent::particle_const_iterator piter = myGenEvent->particles_begin();
1314 piter != myGenEvent->particles_end();
1325 if ( !p->production_vertex() && p->pdg_id() == 2212 )
return;
1327 int partId = p->pdg_id();
1330 std::string latexStringName;
1333 int barcode = p->barcode();
1349 double eta = momentum1.eta();
1350 if ( eta > +10. ) eta = +10.;
1351 if ( eta < -10. ) eta = -10.;
1353 double phi = momentum1.phi();
1355 double pt = momentum1.pt();
1356 double e = momentum1.e();
1368 if(p->production_vertex() &&
1369 p->production_vertex()->particles_in_size() ) {
1371 *(p->production_vertex()->particles_in_const_begin());
1379 int barcodeMother = mother->barcode();
1381 mother->momentum().py(),
1382 mother->momentum().pz(),
1383 mother->momentum().e());
1384 double etaMother = momentumMother.eta();
1385 if ( etaMother > +10. ) etaMother = +10.;
1386 if ( etaMother < -10. ) etaMother = -10.;
1387 double phiMother = momentumMother.phi();
1391 x[0]=etaMother;x[1]=
eta;
1392 y[0]=phiMother;y[1]=
phi;
1394 for (
int view = 2; view<
NViews; view++) {
1398 e,pt,barcode,barcodeMother,
1400 name,latexStringName);
1401 graphicMap_.insert(pair<int,GPFBase *> (genPartId, gp));
1405 for (
int view = 2; view<
NViews; view++) {
1411 name, latexStringName);
1412 graphicMap_.insert(pair<int,GPFBase *> (genPartId, gp));
1466 for (
int ibl=0;ibl<
size;ibl++) {
1473 std::multimap<double, unsigned> ecalElems;
1481 if (ecalElems.size()==0) {
1497 for (
int ibl=0;ibl<
size;ibl++) {
1517 assert( !trackref.
isNull() );
1525 assert( !clusref.
isNull() );
1533 assert( !clusref.
isNull() );
1541 assert( !clusref.
isNull() );
1549 assert( !clusref.
isNull() );
1557 assert( !clusref.
isNull() );
1565 assert( !clusref.
isNull() );
1576 assert( !trackref.
isNull() );
1591 std::cout<<
"unknown PFBlock element of type "<<type<<std::endl;
1594 pair <int, int> idElem;
1596 idElem.second=(*iter).index();
1597 if (ident != -1)
blockIdentsMap_.insert(pair<
int,pair <int,int> > (ibl,idElem));
1620 double maxe = maxee>maxeh ? maxee : maxeh;
1622 int color = TColor::GetColor(210,210,210);
1623 int seedcolor = TColor::GetColor(145,145,145);
1624 int specialcolor = TColor::GetColor(255,140,0);
1627 int rhcolor = color;
1633 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1642 int rhcolor = color;
1648 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1657 int rhcolor = color;
1663 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1672 int rhcolor = color;
1678 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1687 int rhcolor = color;
1693 cerr<<
"DisplayManager::loadGRecHits: unknown color"<<endl;
1708 std::vector<reco::PFRecTrack>::iterator itRecTrack;
1717 = itRecTrack->trajectoryPoint(itRecTrack->nTrajectoryMeasurements() +
1723 const std::vector<reco::PFTrajectoryPoint>& points =
1724 itRecTrack->trajectoryPoints();
1726 int linestyle = itRecTrack->algoType();
1731 createGTrack(*itRecTrack,points,recTrackId, pt, phi0, sign,
false,linestyle);
1746 std::vector<reco::GsfPFRecTrack>::iterator itRecTrack;
1755 = itRecTrack->trajectoryPoint(itRecTrack->nTrajectoryMeasurements() +
1761 const std::vector<reco::PFTrajectoryPoint>& points =
1762 itRecTrack->trajectoryPoints();
1764 int linestyle = itRecTrack->algoType();
1768 createGTrack(*itRecTrack,points,recTrackId, pt, phi0, sign,
false,linestyle,1);
1771 std::vector<reco::PFBrem> brems=itRecTrack->PFRecBrem();
1772 unsigned nbrems=brems.size();
1773 for(
unsigned ibrem=0;ibrem<nbrems;++ibrem)
1775 unsigned indTrajPoint=brems[ibrem].indTrajPoint();
1776 if(indTrajPoint==99)
continue;
1777 double signBrem = 1. ;
1778 int linestyleBrem = brems[ibrem].algoType();
1782 unsigned indexBrem= ind*40+brems[ibrem].indTrajPoint();
1790 std::vector<reco::PFTrajectoryPoint> pointsBrem;
1792 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[0]);
1793 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[1]);
1796 pointsBrem.push_back(itRecTrack->trajectoryPoint(indTrajPoint));
1798 unsigned ntp=brems[ibrem].trajectoryPoints().size();
1799 for(
unsigned itp=2;itp<ntp;++itp)
1801 pointsBrem.push_back(brems[ibrem].trajectoryPoints()[itp]);
1804 double deltaP=brems[ibrem].DeltaP();
1806 = brems[ibrem].trajectoryPoint(brems[ibrem].nTrajectoryMeasurements() +
1809 if (
cos(phi0 - tpatecalbrem.
momentum().Phi()) < 0.)
1812 createGTrack(brems[ibrem],pointsBrem,recTrackIdBrem,deltaP,phi0,signBrem,
false,linestyleBrem,2);
1826 for(
unsigned i=0;
i<simParticlesVSize;
i++) {
1846 const std::vector<reco::PFTrajectoryPoint>& points =
1853 case 22: markerstyle = 3 ; indexMarker=0;
break;
1854 case 11: markerstyle = 5 ; indexMarker=1;
break;
1855 case 13: markerstyle = 2 ; indexMarker=2;
break;
1857 case 321: markerstyle = 24; indexMarker=3;
break;
1858 case 211: markerstyle = 25; indexMarker=4;
break;
1859 case 2212: markerstyle = 26; indexMarker=5;
break;
1860 case 2112: markerstyle = 27; indexMarker=6;
break;
1861 default: markerstyle = 30; indexMarker=7;
break;
1864 bool displayInitial=
true;
1865 if( ptc.
motherId() < 0 ) displayInitial=
false;
1867 createGPart(ptc, points,partId, pt, phi0, sign, displayInitial,indexMarker);
1885 for(
unsigned i=0;
i<(*rechits).size();
i++) {
1887 double energy = (*rechits)[
i].energy();
1889 if(energy > maxe ) {
1891 maxrh = &((*rechits)[
i]);
1903 double phisize = -1;
1904 double etasize = -1;
1905 maxrh->
size(phisize, etasize);
1914 displayHist_[
EPE]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
1915 displayHist_[
EPE]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
1921 displayHist_[
EPH]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
1922 displayHist_[
EPH]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
1932 cerr<<
"no GenEvent"<<endl;
1938 cerr<<
"no particle with barcode "<<barcode<<endl;
1943 particle->momentum().py(),
1944 particle->momentum().pz(),
1945 particle->momentum().e());
1947 double eta = momentum.Eta();
1948 double phi = momentum.phi();
1950 double phisize = 0.05;
1951 double etasize = 0.05;
1957 displayHist_[
EPE]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
1958 displayHist_[
EPE]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
1964 displayHist_[
EPH]->GetXaxis()->SetRangeUser(eta-etagate, eta+etagate);
1965 displayHist_[
EPH]->GetYaxis()->SetRangeUser(phi-phigate, phi+phigate);
1974 if( directory.empty() ) {
1975 directory =
"Event_";
1981 string mkdir =
"mkdir "; mkdir +=
directory;
1982 int code = system( mkdir.c_str() );
1985 cerr<<
"cannot create directory "<<directory<<endl;
1989 cout<<
"Event display printed in directory "<<directory<<endl;
1993 for(
unsigned iView=0; iView<
displayView_.size(); iView++) {
2001 string eps =
name; eps +=
".eps";
2004 string png =
name; png +=
".png";
2010 ofstream
out( txt.c_str() );
2012 cerr<<
"cannot open "<<txt<<endl;
2022 std::multimap<int,GPFBase *>::iterator
p;
2063 std::cout<<
"genParticle "<<name<<
" with barcode "<<barcode<<std::flush<<std::endl;
2065 if (barcodeMother) {
2067 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_
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
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
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)
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
TAttMarker * clusPattern_
const reco::PFTrajectoryPoint & extrapolatedPoint(unsigned layerid) const
reco::GsfPFRecTrackCollection gsfrecTracks_
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)
block
Formating index page's pieces.
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 ?
const math::XYZTLorentzVector & momentum() const
4-momenta quadrivector
const reco::PFTrajectoryPoint & trajectoryPoint(unsigned index) const
void loadGraphicObjects()
const HepMC::GenEvent * GetEvent() const
Log< T >::type log(const T &t)
std::auto_ptr< reco::PFClusterCollection > clustersHFEM_
std::auto_ptr< reco::PFClusterCollection > clustersHFHAD_
XYZPointD XYZPoint
point in space with cartesian internal representation
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