1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#include "TEveCaloData.h"
#include "Fireworks/Core/interface/Context.h"
#include "Fireworks/Core/interface/FWViewContext.h"
#include "Fireworks/Core/interface/FWViewEnergyScale.h"
#include "Fireworks/ParticleFlow/interface/FWLegoEvePFCandidate.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "Fireworks/Core/interface/fwLog.h"
FWLegoEvePFCandidate::FWLegoEvePFCandidate(const reco::PFCandidate& iData,
const FWViewContext* vc,
const fireworks::Context& context)
: m_energy(0.f), m_et(0.f) {
m_et = iData.et();
m_energy = iData.energy();
float base = 0.001; // flour offset 1%
// first vertical line , which is et/energy
FWViewEnergyScale* caloScale = vc->getEnergyScale();
float val = caloScale->getPlotEt() ? m_et : m_energy;
AddLine(iData.eta(), iData.phi(), base, iData.eta(), iData.phi(), base + val * caloScale->getScaleFactorLego());
AddMarker(0, 1.f);
SetMarkerStyle(3);
SetMarkerSize(0.01);
SetDepthTest(false);
// circle pt
const unsigned int nLineSegments = 20;
float circleScalingFactor = 50;
const double jetRadius = iData.pt() / circleScalingFactor;
for (unsigned int iphi = 0; iphi < nLineSegments; ++iphi) {
AddLine(iData.eta() + jetRadius * cos(2 * M_PI / nLineSegments * iphi),
iData.phi() + jetRadius * sin(2 * M_PI / nLineSegments * iphi),
base,
iData.eta() + jetRadius * cos(2 * M_PI / nLineSegments * (iphi + 1)),
iData.phi() + jetRadius * sin(2 * M_PI / nLineSegments * (iphi + 1)),
base);
}
}
void FWLegoEvePFCandidate::updateScale(const FWViewContext* vc, const fireworks::Context& context) {
FWViewEnergyScale* caloScale = vc->getEnergyScale();
float val = caloScale->getPlotEt() ? m_et : m_energy;
// printf("update scale %f \n", getScale(vc, context)); fflush(stdout);
float scaleFac = caloScale->getScaleFactorLego();
// resize first line
TEveChunkManager::iterator li(GetLinePlex());
li.next();
TEveStraightLineSet::Line_t& l = *(TEveStraightLineSet::Line_t*)li();
l.fV2[2] = l.fV1[2] + val * scaleFac;
// move end point
TEveChunkManager::iterator mi(GetMarkerPlex());
mi.next();
TEveStraightLineSet::Marker_t& m = *(TEveStraightLineSet::Marker_t*)mi();
m.fV[2] = l.fV2[2];
}
|