11 #include "TEveStraightLineSet.h"
12 #include "TEvePointSet.h"
13 #include "TEveScene.h"
14 #include "TEveViewer.h"
15 #include "TGLViewer.h"
17 #include "TEveCaloLegoOverlay.h"
18 #include "TRootEmbeddedCanvas.h"
59 std::vector<DetId> ids;
71 TEveCaloLegoOverlay*
overlay =
new TEveCaloLegoOverlay();
73 overlay->SetShowPerspective(kFALSE);
79 viewerGL()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
83 viewerGL()->ResetCamerasAfterNextUpdate();
95 TLatex* latex =
new TLatex(x0, y0,
"");
96 const double textsize(0.05);
97 latex->SetTextSize(2 * textsize);
101 float fontsize = latex->GetTextSize() * 0.6;
105 latex->SetTextSize(textsize);
106 fontsize = latex->GetTextSize() * 0.6;
109 x,
y, Form(
" p_{T} = %.1f GeV, #eta = %0.2f, #varphi = %0.2f",
muon->pt(),
muon->eta(),
muon->phi()));
112 if (
muon->charge() > 0)
113 latex->DrawLatex(
x,
y,
" charge = +1");
115 latex->DrawLatex(
x,
y,
" charge = -1");
118 if (
muon->isEnergyValid()) {
120 latex->DrawLatex(
x,
y,
"ECAL energy in:");
122 latex->DrawLatex(
x,
y, Form(
" crossed crystalls = %.3f",
muon->calEnergy().em));
124 latex->DrawLatex(
x,
y, Form(
" 3x3 crystall shape = %.3f",
muon->calEnergy().emS9));
126 latex->DrawLatex(
x,
y, Form(
" 5x5 crystall shape = %.3f",
muon->calEnergy().emS25));
134 bool barrel = fabs(
i->eta()) < 1.5;
135 if (
i->isEnergyValid())
136 barrel = fabs(
i->calEnergy().ecal_position.eta()) < 1.5;
139 Double_t
delta(0.01);
140 TEveStraightLineSet* direction =
new TEveStraightLineSet(
"Direction at vertex");
141 direction->SetPickable(kTRUE);
142 direction->SetTitle(
"Muon direction at vertex");
143 direction->SetPickable(kTRUE);
148 x = 310 * fabs(
tan(
i->theta())) *
cos(
i->phi());
149 y = 310 * fabs(
tan(
i->theta())) *
sin(
i->phi());
153 direction->SetLineColor(kYellow);
154 direction->SetDepthTest(kFALSE);
155 tList->AddElement(direction);
157 if (!
i->isEnergyValid())
161 TEveStraightLineSet* ecalposition =
new TEveStraightLineSet(
"ecal position");
162 ecalposition->SetPickable(kTRUE);
163 ecalposition->SetTitle(
"Muon position at ECAL surface");
165 x =
i->calEnergy().ecal_position.eta();
166 y =
i->calEnergy().ecal_position.phi();
168 x =
i->calEnergy().ecal_position.x();
169 y =
i->calEnergy().ecal_position.y();
174 ecalposition->SetLineColor(kRed);
175 ecalposition->SetLineWidth(2);
176 ecalposition->SetDepthTest(kFALSE);
177 tList->AddElement(ecalposition);
180 TEveStraightLineSet* hcalposition =
new TEveStraightLineSet(
"hcal position");
181 hcalposition->SetPickable(kTRUE);
182 hcalposition->SetTitle(
"Muon position at HCAL surface");
184 x =
i->calEnergy().hcal_position.eta();
185 y =
i->calEnergy().hcal_position.phi();
187 x =
i->calEnergy().hcal_position.x();
188 y =
i->calEnergy().hcal_position.y();
193 hcalposition->SetLineColor(kBlue);
194 hcalposition->SetLineWidth(2);
195 hcalposition->SetDepthTest(kFALSE);
196 tList->AddElement(hcalposition);
199 TEveStraightLineSet*
lines =
new TEveStraightLineSet(
"Muon trajectory in ECAL",
"Muon trajectory in ECAL");
200 lines->SetPickable(kTRUE);
202 lines->AddLine(
i->calEnergy().ecal_position.eta(),
203 i->calEnergy().ecal_position.phi(),
205 i->calEnergy().hcal_position.eta(),
206 i->calEnergy().hcal_position.phi(),
209 lines->AddLine(
i->calEnergy().ecal_position.x(),
210 i->calEnergy().ecal_position.y(),
212 i->calEnergy().hcal_position.x(),
213 i->calEnergy().hcal_position.y(),
216 lines->SetLineColor(kRed);
217 lines->SetDepthTest(kFALSE);
218 tList->AddElement(
lines);