13 #include "TEveJetCone.h" 14 #include "TEveScalableStraightLineSet.h" 54 void cleanLocal()
override;
69 void buildViewType(
const reco::Jet& iData,
71 TEveElement& oItemHolder,
75 void localModelChanges(
const FWModelId& iId,
76 TEveElement* iCompound,
83 typedef std::vector<fireworks::jetScaleMarker>
Lines_t;
88 TEveElementList* requestCommon();
93 std::vector<fireworks::jetScaleMarker>
m_lines;
98 m_common =
new TEveElementList(
"common electron scene");
105 if (
m_common->HasChildren() ==
false) {
106 for (
int i = 0; i < static_cast<int>(
item()->
size()); ++
i) {
109 cone->SetFillColor(
item()->defaultDisplayProperties().color());
110 cone->SetLineColor(
item()->defaultDisplayProperties().color());
120 TEveElement& oItemHolder,
125 TEveElement::List_i coneIt = cones->BeginChildren();
126 std::advance(coneIt, iIndex);
146 static const float_t offr = 4;
150 if (theta <
context().caloTransAngle() ||
M_PI - theta <
context().caloTransAngle()) {
152 r = z_ecal / fabs(
cos(theta));
154 r = r_ecal /
sin(theta);
157 p1.Set(0., (phi > 0 ? r * fabs(
sin(theta)) : -r * fabs(
sin(theta))), r *
cos(theta));
158 p2.Set(0., (phi > 0 ? (r + size) * fabs(
sin(theta)) : -(r + size) * fabs(
sin(theta))), (r + size) *
cos(theta));
161 p1.Set(ecalR *
cos(phi), ecalR *
sin(phi), 0);
162 p2.Set((ecalR + size) *
cos(phi), (ecalR + size) *
sin(phi), 0);
165 markers.
m_ls->SetScaleCenter(p1.fX, p1.fY, p1.fZ);
166 markers.
m_ls->AddLine(p1, p2);
168 markers.
m_ls->SetLineWidth(4);
176 markers.
m_text->SetMainColor(
item()->defaultDisplayProperties().color());
180 markers.
m_ls->SetMarkerColor(markers.
m_ls->GetMainColor());
189 TEveElement* iCompound,
195 TEveStraightLineSetProjected* projLineSet = (TEveStraightLineSetProjected*)(*(*i).m_ls->BeginProjecteds());
197 projLineSet->UpdateProjection();
208 if (vc == (*i).m_vc) {
213 (*i).m_text->SetText(Form(
"%.1f", value));
216 TEveStraightLineSetProjected* projLineSet = (TEveStraightLineSetProjected*)(*(*i).m_ls->BeginProjecteds());
217 projLineSet->UpdateProjection();
225 for (TEveElement::List_i
i =
m_common->BeginChildren();
i !=
m_common->EndChildren(); ++
i) {
226 TEveJetCone* cone =
dynamic_cast<TEveJetCone*
>(*i);
234 TEveChunkManager::iterator li(s.
m_ls->GetLinePlex());
236 TEveStraightLineSet::Line_t&
l = *(TEveStraightLineSet::Line_t*)li();
237 TEveVector
v(l.fV2[0] - l.fV1[0], l.fV2[1] - l.fV1[1], l.fV2[2] - l.fV1[2]);
245 float x = l.fV1[0] + v[0];
246 float y = l.fV1[1] + v[1];
247 float z = l.fV1[2] + v[2];
250 s.
m_text->RefMainTrans().SetPos(x, y, z);
251 if ((s.
m_text)->BeginProjecteds() != (s.
m_text)->EndProjecteds()) {
bool haveSingleProduct() const override
const fireworks::Context & context() const
void scaleProduct(TEveElementList *parent, FWViewType::EType, const FWViewContext *vc) override
FWProxyBuilderConfiguration * getConfig() const
float getScaleFactor3D() const
static const std::string kJetApexBeamSpot("Place Apex In BeamSpot")
void UpdateProjection() override
const FWDisplayProperties & defaultDisplayProperties() const
static const std::string kJetLabelsRhoPhiOn("Draw Labels in RhoPhi View")
static const int kAllRPZBits
double theta() const final
momentum polar angle
Base class for all types of Jets.
void voteMaxEtAndEnergy(float Et, float energy) const
void setupAddElement(TEveElement *el, TEveElement *parent, bool set_color=true) const
jetScaleMarker(TEveScalableStraightLineSet *ls, float et, float e, const FWViewContext *vc)
Sin< T >::type sin(const T &t)
FWViewEnergyScale * getEnergyScale() const
Geom::Theta< T > theta() const
void getEventCenter(float *inC) const
static float caloZ2(bool offset=true)
std::vector< fireworks::jetScaleMarker > Lines_t
static const std::string kJetOffset("Label Offset")
const FWEventItem * item() const
static const int kAll3DBits
static bool isProjected(int)
Char_t transparency() const
double et() const final
transverse energy
const reco::Jet & modelData(int index)
virtual void setItem(const FWEventItem *iItem)
Cos< T >::type cos(const T &t)
void setItem(const FWEventItem *iItem) override
double energy() const final
energy
static float caloR1(bool offset=true)
Tan< T >::type tan(const T &t)
static const std::string kJetLabelsRhoZOn("Draw Labels in RhoZ View")
float getMaxEnergyInEvent(bool isEt) const
static Context * getInstance()
TEveElementList * m_common
FWGenericParameter< T > * assertParam(const std::string &name, T def)
#define REGISTER_PROXYBUILDER_METHODS()
#define REGISTER_FWPROXYBUILDER(_name_, _type_, _purpose_, _view_)
CmsShowCommon * commonPrefs() const
TEveScalableStraightLineSet * m_ls
void buildViewType(const reco::Jet &iData, unsigned int iIndex, TEveElement &oItemHolder, FWViewType::EType type, const FWViewContext *) override
bool havePerViewProduct(FWViewType::EType) const override
static float caloZ1(bool offset=true)
T value(const std::string &name)
void cleanLocal() override
std::vector< fireworks::jetScaleMarker > m_lines
TEveElementList * requestCommon()
~FWJetProxyBuilder() override
double phi() const final
momentum azimuthal angle
void localModelChanges(const FWModelId &iId, TEveElement *iCompound, FWViewType::EType viewType, const FWViewContext *vc) override
void setTextPos(fireworks::jetScaleMarker &s, const FWViewContext *vc, FWViewType::EType)
void increaseComponentTransparency(unsigned int index, TEveElement *holder, const std::string &name, Char_t transpOffset)
TEveJetCone * makeEveJetCone(const reco::Jet &iData, const fireworks::Context &context)