13 #include "TEveBoxSet.h" 28 TEveElement &oItemHolder,
34 TEveElement &oItemHolder,
44 TEveBoxSet *hex_boxset =
new TEveBoxSet();
46 hex_boxset->UseSingleColor();
47 hex_boxset->SetPickable(
true);
48 hex_boxset->Reset(TEveBoxSet::kBT_Hex,
true, 64);
49 hex_boxset->SetAntiFlick(
true);
52 TEveBoxSet *boxset =
new TEveBoxSet();
54 boxset->UseSingleColor();
55 boxset->SetPickable(
true);
56 boxset->Reset(TEveBoxSet::kBT_FreeBox,
true, 64);
57 boxset->SetAntiFlick(
true);
59 const float energy = fmin(10 * iData.
energy() / saturation_energy, 1.0);
63 for (std::unordered_set<unsigned>::const_iterator it =
cells.begin(), itEnd =
cells.end(); it != itEnd; ++it) {
64 const bool z = (*it >> 25) & 0
x1;
67 if (((z_plus & z_minus) != 1) && (((z_plus | z_minus) == 0) || !(
z == z_minus ||
z == !z_plus)))
74 if (corners ==
nullptr ||
parameters ==
nullptr || shapes ==
nullptr) {
79 const bool isScintillator = (total_points == 4);
80 const uint8_t
type = ((*it >> 28) & 0xF);
95 if (ll != ((*it >> (isScintillator ? 17 : 20)) & 0x1F))
100 if (isScintillator) {
101 const int total_vertices = 3 * total_points;
103 std::vector<float> pnts(24);
104 for (
int i = 0;
i < total_points; ++
i) {
105 pnts[
i * 3 + 0] = corners[
i * 3];
106 pnts[
i * 3 + 1] = corners[
i * 3 + 1];
107 pnts[
i * 3 + 2] = corners[
i * 3 + 2];
109 pnts[(
i * 3 + 0) + total_vertices] = corners[
i * 3];
110 pnts[(
i * 3 + 1) + total_vertices] = corners[
i * 3 + 1];
111 pnts[(
i * 3 + 2) + total_vertices] = corners[
i * 3 + 2] + shapes[3];
113 boxset->AddBox(&pnts[0]);
114 boxset->DigitColor(
energy * 255, 0, 255 -
energy * 255);
122 float centerX = (corners[6] + corners[6 +
offset]) / 2;
123 float centerY = (corners[7] + corners[7 +
offset]) / 2;
124 float radius = fabs(corners[6] - corners[6 +
offset]) / 2;
125 hex_boxset->AddHex(TEveVector(centerX, centerY, corners[2]),
radius, shapes[2], shapes[3]);
126 hex_boxset->DigitColor(
energy * 255, 0, 255 -
energy * 255);
133 hex_boxset->RefitPlex();
135 hex_boxset->CSCTakeAnyParentAsMaster();
137 hex_boxset->CSCApplyMainColorToMatchingChildren();
138 hex_boxset->CSCApplyMainTransparencyToMatchingChildren();
139 hex_boxset->SetMainColor(
item()->modelInfo(iIndex).displayProperties().color());
140 hex_boxset->SetMainTransparency(
item()->defaultDisplayProperties().transparency());
142 oItemHolder.AddElement(hex_boxset);
148 boxset->CSCTakeAnyParentAsMaster();
150 boxset->CSCApplyMainColorToMatchingChildren();
151 boxset->CSCApplyMainTransparencyToMatchingChildren();
152 boxset->SetMainColor(
item()->modelInfo(iIndex).displayProperties().color());
153 boxset->SetMainTransparency(
item()->defaultDisplayProperties().transparency());
155 oItemHolder.AddElement(boxset);
161 "HGCal Trigger Cell",
#define REGISTER_PROXYBUILDER_METHODS()
#define REGISTER_FWPROXYBUILDER(_name_, _type_, _purpose_, _view_)
FWProxyBuilderConfiguration * getConfig() const
std::unordered_set< unsigned > getCellsFromTriggerCell(const unsigned trigger_cell_id) const
static const int kAll3DBits
~FWHGCalTriggerCellProxyBuilder(void) override
const float * getCorners(unsigned int id) const
const FWHGCalTriggerCellProxyBuilder & operator=(const FWHGCalTriggerCellProxyBuilder &)=delete
const FWGeometry * getGeom() const
const float * getShapePars(unsigned int id) const
const float * getParameters(unsigned int id) const
T value(const std::string &name)
const FWEventItem * item() const
FWHGCalTriggerCellProxyBuilder(void)
double energy() const final
energy