iIndex is the index where iData is found in the container from which it came iItemHolder is the object to which you add your own objects which inherit from TEveElement
89 std::vector<std::pair<DetId, float>> clusterDetIds = iData.
hitsAndFractions();
92 TEveBoxSet *hex_boxset =
new TEveBoxSet();
94 hex_boxset->UseSingleColor();
95 hex_boxset->SetPickable(
true);
96 hex_boxset->Reset(TEveBoxSet::kBT_Hex,
true, 64);
97 hex_boxset->SetAntiFlick(
true);
100 TEveBoxSet *boxset =
new TEveBoxSet();
102 boxset->UseSingleColor();
103 boxset->SetPickable(
true);
104 boxset->Reset(TEveBoxSet::kBT_FreeBox,
true, 64);
105 boxset->SetAntiFlick(
true);
107 for (
std::vector<std::pair<DetId, float>>::iterator it = clusterDetIds.begin(), itEnd = clusterDetIds.end();
110 const uint8_t
type = ((it->first >> 28) & 0xF);
113 if (corners ==
nullptr)
122 const bool z = (it->first >> 25) & 0
x1;
131 if (
parameters ==
nullptr || shapes ==
nullptr)
135 const bool isScintillator = (total_points == 4);
150 if (ll != ((it->first >> (isScintillator ? 17 : 20)) & 0x1F))
155 if (iData.
seed().
rawId() == it->first.rawId()) {
156 TEveStraightLineSet *marker =
new TEveStraightLineSet;
157 marker->SetLineWidth(1);
160 const float center[3] = {corners[total_points * 3 + 0],
161 corners[total_points * 3 + 1],
162 corners[total_points * 3 + 2] + shapes[3] * 0.5f};
165 const float crossScale = 1.0f + fmin(iData.
energy(), 5.0f);
166 marker->AddLine(center[0] - crossScale, center[1], center[2], center[0] + crossScale, center[1], center[2]);
167 marker->AddLine(center[0], center[1] - crossScale, center[2], center[0], center[1] + crossScale, center[2]);
168 marker->AddLine(center[0], center[1], center[2] - crossScale, center[0], center[1], center[2] + crossScale);
170 oItemHolder.AddElement(marker);
172 TEveStraightLineSet *position_marker =
new TEveStraightLineSet;
173 position_marker->SetLineWidth(2);
174 position_marker->SetLineColor(kOrange);
176 const float position_crossScale = crossScale * 0.5;
177 position_marker->AddLine(
178 pos.x() - position_crossScale,
pos.y(),
pos.z(),
pos.x() + position_crossScale,
pos.y(),
pos.z());
179 position_marker->AddLine(
180 pos.x(),
pos.y() - position_crossScale,
pos.z(),
pos.x(),
pos.y() + position_crossScale,
pos.z());
182 oItemHolder.AddElement(position_marker);
186 fmin((
item()->getConfig()->value<bool>(
"Cluster(0)/RecHit(1)") ?
hitmap->at(it->first)->energy()
193 if (isScintillator) {
194 const int total_vertices = 3 * total_points;
196 std::vector<float> pnts(24);
197 for (
int i = 0;
i < total_points; ++
i) {
198 pnts[
i * 3 + 0] = corners[
i * 3];
199 pnts[
i * 3 + 1] = corners[
i * 3 + 1];
200 pnts[
i * 3 + 2] = corners[
i * 3 + 2];
202 pnts[(
i * 3 + 0) + total_vertices] = corners[
i * 3];
203 pnts[(
i * 3 + 1) + total_vertices] = corners[
i * 3 + 1];
204 pnts[(
i * 3 + 2) + total_vertices] = corners[
i * 3 + 2] + shapes[3];
206 boxset->AddBox(&pnts[0]);
209 : boxset->DigitColor(64, 64, 64);
218 float centerX = (corners[6] + corners[6 +
offset]) / 2;
219 float centerY = (corners[7] + corners[7 +
offset]) / 2;
220 float radius = fabs(corners[6] - corners[6 +
offset]) / 2;
221 hex_boxset->AddHex(TEveVector(centerX, centerY, corners[2]),
radius, shapes[2], shapes[3]);
224 : hex_boxset->DigitColor(64, 64, 64);
234 std::vector<float> pnts(24);
236 boxset->AddBox(&pnts[0]);
241 hex_boxset->RefitPlex();
243 hex_boxset->CSCTakeAnyParentAsMaster();
245 hex_boxset->CSCApplyMainColorToMatchingChildren();
246 hex_boxset->CSCApplyMainTransparencyToMatchingChildren();
247 hex_boxset->SetMainColor(
item()->modelInfo(iIndex).displayProperties().color());
248 hex_boxset->SetMainTransparency(
item()->defaultDisplayProperties().transparency());
250 oItemHolder.AddElement(hex_boxset);
256 boxset->CSCTakeAnyParentAsMaster();
258 boxset->CSCApplyMainColorToMatchingChildren();
259 boxset->CSCApplyMainTransparencyToMatchingChildren();
260 boxset->SetMainColor(
item()->modelInfo(iIndex).displayProperties().color());
261 boxset->SetMainTransparency(
item()->defaultDisplayProperties().transparency());
263 oItemHolder.AddElement(boxset);
const math::XYZPoint & position() const
cluster centroid position
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
AlgoId algo() const
algorithm identifier
static constexpr uint8_t gradient_steps
const_reference_type get(ProductID id, size_t idx) const
DetId seed() const
return DetId of seed
const float * getCorners(unsigned int id) const
static constexpr uint8_t gradient[3][gradient_steps]
double energy() const
cluster energy
void energyTower3DCorners(const float *corners, float scale, std::vector< float > &, bool reflect=false)
edm::Handle< edm::ValueMap< std::pair< float, float > > > TimeValueMapHandle
const FWGeometry * getGeom() const
constexpr uint32_t rawId() const
get the raw id
const float * getShapePars(unsigned int id) const
const float * getParameters(unsigned int id) const
const FWEventItem * item() const
std::unordered_map< DetId, const HGCRecHit *> * hitmap