CMS 3D CMS Logo

FWTauProxyBuilderBase.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Calo
4 // Class : FWTauProxyBuilderBase
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Alja Mrak-Tadel
10 // Created: Thu Oct 21 20:40:28 CEST 2010
11 //
12 
13 // system include files
14 
15 // user include files
16 #include "TGeoTube.h"
17 #include "TEveJetCone.h"
18 #include "TEveGeoNode.h"
19 #include "TEveGeoShape.h"
20 #include "TEveScalableStraightLineSet.h"
21 #include "TEveTrack.h"
22 
33 
35 
38 
39 static const std::string kTauApexBeamSpot("Place Apex In BeamSpot");
40 FWTauProxyBuilderBase::FWTauProxyBuilderBase() : m_minTheta(0), m_maxTheta(0) {}
41 
43 
46  if (iItem) {
47  iItem->getConfig()->assertParam(kTauApexBeamSpot, false);
48  }
49 }
50 
52  const reco::Jet* iJet,
53  TEveElement* comp,
55  const FWViewContext* vc) {
56  // track
57  addLeadTrack(iTau, comp);
59 
60  // projected markers
62  double phi = iTau.phi();
63  double theta = iTau.theta();
64  double size = 1;
65 
67  float ecalR = barrel ? context().caloR1() : context().caloR2();
68  float ecalZ = barrel ? context().caloZ1() : context().caloZ2();
69 
70  TEveScalableStraightLineSet* marker = new TEveScalableStraightLineSet("energy");
71 
72  if (type == FWViewType::kRhoZ) {
73  double r(0);
74  (theta < context().caloTransAngle() || M_PI - theta < context().caloTransAngle()) ? r = ecalZ / fabs(cos(theta))
75  : r = ecalR / sin(theta);
76 
77  fireworks::addRhoZEnergyProjection(this, comp, ecalR, ecalZ, m_minTheta - 0.003, m_maxTheta + 0.003, phi);
78 
79  marker->SetScaleCenter(0., (phi > 0 ? r * fabs(sin(theta)) : -r * fabs(sin(theta))), r * cos(theta));
80  marker->AddLine(0.,
81  (phi > 0 ? r * fabs(sin(theta)) : -r * fabs(sin(theta))),
82  r * cos(theta),
83  0.,
84  (phi > 0 ? (r + size) * fabs(sin(theta)) : -(r + size) * fabs(sin(theta))),
85  (r + size) * cos(theta));
86 
87  } else {
88  std::pair<double, double> phiRange = fireworks::getPhiRange(m_phis, phi);
89  double min_phi = phiRange.first - M_PI / 36 / 2;
90  double max_phi = phiRange.second + M_PI / 36 / 2;
91  TEveGeoManagerHolder gmgr(TEveGeoShape::GetGeoMangeur());
92  TGeoBBox* sc_box = new TGeoTubeSeg(ecalR - 1, ecalR + 1, 1, min_phi * 180 / M_PI, max_phi * 180 / M_PI);
93  TEveGeoShape* shape = fireworks::getShape("spread", sc_box, item()->defaultDisplayProperties().color());
94  shape->SetPickable(kTRUE);
95  setupAddElement(shape, comp);
96 
97  marker->SetScaleCenter(ecalR * cos(phi), ecalR * sin(phi), 0);
98  marker->AddLine(ecalR * cos(phi), ecalR * sin(phi), 0, (ecalR + size) * cos(phi), (ecalR + size) * sin(phi), 0);
99  }
100  marker->SetLineWidth(4);
101  FWViewEnergyScale* caloScale = vc->getEnergyScale();
102  marker->SetScale(caloScale->getScaleFactor3D() * (caloScale->getPlotEt() ? iTau.et() : iTau.energy()));
103  setupAddElement(marker, comp);
104  m_lines.push_back(fireworks::scaleMarker(marker, iTau.et(), iTau.energy(), vc));
105 
106  context().voteMaxEtAndEnergy(iTau.et(), iTau.energy());
107  } else if (iJet) {
108  // jet
109  TEveJetCone* cone = fireworks::makeEveJetCone(*iJet, context());
110  if (item()->getConfig()->value<bool>(kTauApexBeamSpot)) {
112  cone->SetApex(TEveVector(bs->x0(), bs->y0(), bs->z0()));
113  }
115  cone->SetFillColor(dp.color());
116  cone->SetLineColor(dp.color());
117  setupAddElement(cone, comp);
118  cone->SetMainTransparency(TMath::Min(100, 80 + dp.transparency() / 5));
119  }
120 }
121 
122 // Tracks which passed quality cuts and are inside a tracker signal cone around leading Track
123 void FWTauProxyBuilderBase::addConstituentTracks(const reco::BaseTau& tau, class TEveElement* product) {
124  for (reco::TrackRefVector::iterator i = tau.signalTracks().begin(), iEnd = tau.signalTracks().end(); i != iEnd; ++i) {
125  TEveTrack* track(nullptr);
126  if (i->isAvailable()) {
127  track = fireworks::prepareTrack(**i, context().getTrackPropagator());
128  track->MakeTrack();
129  setupAddElement(track, product);
130  }
131  }
132 }
133 
134 // Leading Track
135 void FWTauProxyBuilderBase::addLeadTrack(const reco::BaseTau& tau, class TEveElement* product) {
136  const reco::TrackRef leadTrack = tau.leadTrack();
137  if (!leadTrack)
138  return;
139 
140  TEveTrack* track = fireworks::prepareTrack(*leadTrack, context().getTrackPropagator());
141  if (track) {
142  track->MakeTrack();
143  setupAddElement(track, product);
144  }
145 }
146 
148  TEveElement* iCompound,
149  FWViewType::EType viewType,
150  const FWViewContext* vc) {
151  if (FWViewType::isProjected(viewType))
152  increaseComponentTransparency(iId.index(), iCompound, "TEveJetCone", 80);
153 }
154 
155 void FWTauProxyBuilderBase::scaleProduct(TEveElementList* parent, FWViewType::EType viewType, const FWViewContext* vc) {
156  if (FWViewType::isProjected(viewType)) {
157  typedef std::vector<fireworks::scaleMarker> Lines_t;
158  FWViewEnergyScale* caloScale = vc->getEnergyScale();
159  // printf("%p -> %f\n", this,caloScale->getValToHeight() );
160  for (Lines_t::iterator i = m_lines.begin(); i != m_lines.end(); ++i) {
161  if (vc == (*i).m_vc) {
162  float value = caloScale->getPlotEt() ? (*i).m_et : (*i).m_energy;
163  (*i).m_ls->SetScale(caloScale->getScaleFactor3D() * value);
164  TEveProjected* proj = *(*i).m_ls->BeginProjecteds();
165  proj->UpdateProjection();
166  }
167  }
168  }
169 }
170 
mps_fire.i
i
Definition: mps_fire.py:428
reco::Jet
Base class for all types of Jets.
Definition: Jet.h:20
FWTauProxyBuilderBase::buildBaseTau
void buildBaseTau(const reco::BaseTau &iTau, const reco::Jet *iJet, TEveElement *comp, FWViewType::EType type, const FWViewContext *vc)
Definition: FWTauProxyBuilderBase.cc:51
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
Reference_intrackfit_cff.barrel
list barrel
Definition: Reference_intrackfit_cff.py:37
FWViewType::EType
EType
Definition: FWViewType.h:31
FWEventItem::getConfig
FWProxyBuilderConfiguration * getConfig() const
Definition: FWEventItem.h:150
metsig::tau
Definition: SignAlgoResolutions.h:49
BaseTau.h
FWModelId
Definition: FWModelId.h:28
FWTauProxyBuilderBase::cleanLocal
void cleanLocal() override
Definition: FWTauProxyBuilderBase.cc:171
FWViewType::kRhoZ
Definition: FWViewType.h:33
makeEveJetCone.h
FWViewEnergyScale::getPlotEt
bool getPlotEt() const
Definition: FWViewEnergyScale.h:47
fireworks::Context::getBeamSpot
FWBeamSpot * getBeamSpot() const
Definition: Context.h:67
BuilderUtils.h
FWTauProxyBuilderBase::localModelChanges
void localModelChanges(const FWModelId &iId, TEveElement *iCompound, FWViewType::EType viewType, const FWViewContext *vc) override
Definition: FWTauProxyBuilderBase.cc:147
FWViewType::isProjected
static bool isProjected(int)
Definition: FWViewType.cc:100
FWTauProxyBuilderBase::m_maxTheta
float m_maxTheta
Definition: FWTauProxyBuilderBase.h:53
AlCaHLTBitMon_QueryRunRegistry.comp
comp
Definition: AlCaHLTBitMon_QueryRunRegistry.py:249
TrackUtils.h
edm::Ref< TrackCollection >
kTauApexBeamSpot
static const std::string kTauApexBeamSpot("Place Apex In BeamSpot")
fireworks::getShape
TEveGeoShape * getShape(const char *name, TGeoBBox *shape, Color_t color)
Definition: BuilderUtils.cc:44
FWEventItem::defaultDisplayProperties
const FWDisplayProperties & defaultDisplayProperties() const
Definition: FWEventItem.cc:403
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
cms::cuda::bs
bs
Definition: HistoContainer.h:127
singlePfTauSkim_cff.leadTrack
leadTrack
Definition: singlePfTauSkim_cff.py:22
fireworks::Context::caloZ2
static float caloZ2(bool offset=true)
Definition: Context.cc:185
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Track.h
reco::BaseTau
Definition: BaseTau.h:18
Calorimetry_cff.dp
dp
Definition: Calorimetry_cff.py:157
fireworks::Context::voteMaxEtAndEnergy
void voteMaxEtAndEnergy(float Et, float energy) const
Definition: Context.cc:162
FWTauProxyBuilderBase::addConstituentTracks
void addConstituentTracks(const reco::BaseTau &tau, class TEveElement *product)
Definition: FWTauProxyBuilderBase.cc:123
FWProxyBuilderBase::increaseComponentTransparency
void increaseComponentTransparency(unsigned int index, TEveElement *holder, const std::string &name, Char_t transpOffset)
Definition: FWProxyBuilderBase.cc:393
reco::LeafCandidate::theta
double theta() const final
momentum polar angle
Definition: LeafCandidate.h:150
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
FWTauProxyBuilderBase::addLeadTrack
void addLeadTrack(const reco::BaseTau &tau, class TEveElement *product)
Definition: FWTauProxyBuilderBase.cc:135
FWModelId::index
int index() const
Definition: FWModelId.h:41
fireworks::addRhoZEnergyProjection
void addRhoZEnergyProjection(FWProxyBuilderBase *, TEveElement *, double r_ecal, double z_ecal, double theta_min, double theta_max, double phi)
Definition: BuilderUtils.cc:58
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FWBeamSpot
Definition: FWBeamSpot.h:11
FWProxyBuilderConfiguration::assertParam
FWGenericParameter< T > * assertParam(const std::string &name, T def)
Definition: FWProxyBuilderConfiguration.cc:83
amptDefault_cfi.proj
proj
Definition: amptDefault_cfi.py:13
FWTauProxyBuilderBase::~FWTauProxyBuilderBase
~FWTauProxyBuilderBase() override
Definition: FWTauProxyBuilderBase.cc:42
fireworks::Context::caloR2
static float caloR2(bool offset=true)
Definition: Context.cc:182
fireworks::makeEveJetCone
TEveJetCone * makeEveJetCone(const reco::Jet &iData, const fireworks::Context &context)
Definition: makeEveJetCone.cc:6
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
fireworks::prepareTrack
TEveTrack * prepareTrack(const reco::Track &track, TEveTrackPropagator *propagator, const std::vector< TEveVector > &extraRefPoints=std::vector< TEveVector >())
Definition: TrackUtils.cc:62
FWProxyBuilderConfiguration.h
FWProxyBuilderBase::setupAddElement
void setupAddElement(TEveElement *el, TEveElement *parent, bool set_color=true) const
Definition: FWProxyBuilderBase.cc:350
value
Definition: value.py:1
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
FWTauProxyBuilderBase::m_lines
std::vector< fireworks::scaleMarker > m_lines
Definition: FWTauProxyBuilderBase.h:77
FWEventItem.h
FWViewContext
Definition: FWViewContext.h:32
fireworks::Context::caloTransAngle
static float caloTransAngle()
Definition: Context.cc:189
FWTauProxyBuilderBase::m_phis
std::vector< double > m_phis
Definition: FWTauProxyBuilderBase.h:54
FWDisplayProperties
Definition: FWDisplayProperties.h:28
alignCSCRings.r
r
Definition: alignCSCRings.py:93
DDAxes::phi
FWProxyBuilderBase::item
const FWEventItem * item() const
Definition: FWProxyBuilderBase.h:64
FWViewEnergyScale::getScaleFactor3D
float getScaleFactor3D() const
Definition: FWViewEnergyScale.h:44
reco::LeafCandidate::et
double et() const final
transverse energy
Definition: LeafCandidate.h:127
FWEventItem
Definition: FWEventItem.h:56
fireworks::Context::caloZ1
static float caloZ1(bool offset=true)
Definition: Context.cc:183
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
FWTauProxyBuilderBase::FWTauProxyBuilderBase
FWTauProxyBuilderBase()
Definition: FWTauProxyBuilderBase.cc:40
relativeConstraints.value
value
Definition: relativeConstraints.py:53
edm::RefVectorIterator
Definition: EDProductfwd.h:33
thetaBins.h
FWViewEnergyScale
Definition: FWViewEnergyScale.h:34
fireworks::scaleMarker
Definition: scaleMarker.h:25
FWBeamSpot.h
reco::LeafCandidate::energy
double energy() const final
energy
Definition: LeafCandidate.h:125
FWProxyBuilderBase::context
const fireworks::Context & context() const
Definition: FWProxyBuilderBase.cc:412
FWTauProxyBuilderBase::m_minTheta
float m_minTheta
Definition: FWTauProxyBuilderBase.h:52
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
FWViewEnergyScale.h
FWTauProxyBuilderBase::setItem
void setItem(const FWEventItem *iItem) override
Definition: FWTauProxyBuilderBase.cc:44
Min
T Min(T a, T b)
Definition: MathUtil.h:39
FWProxyBuilderBase::setItem
virtual void setItem(const FWEventItem *iItem)
Definition: FWProxyBuilderBase.cc:83
FWViewContext::getEnergyScale
FWViewEnergyScale * getEnergyScale() const
Definition: FWViewContext.cc:25
class-composition.parent
parent
Definition: class-composition.py:88
FWTauProxyBuilderBase.h
fireworks::Context::caloR1
static float caloR1(bool offset=true)
Definition: Context.cc:180
FWTauProxyBuilderBase::scaleProduct
void scaleProduct(TEveElementList *parent, FWViewType::EType, const FWViewContext *vc) override
Definition: FWTauProxyBuilderBase.cc:155
Context.h
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
fireworks::getPhiRange
std::pair< double, double > getPhiRange(const std::vector< double > &phis, double phi)
Definition: BuilderUtils.cc:21