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
62
63
64
65
66
67
68
69
70
71
|
// -*- C++ -*-
// $Id: FWTracksModulesProxyBuilder.cc,v 1.1 2009/01/16 10:37:00 Tom Danielson
//
// user include files
#include "TEveGeoShape.h"
#include "Fireworks/Core/interface/FWSimpleProxyBuilderTemplate.h"
#include "Fireworks/Core/interface/FWGeometry.h"
#include "Fireworks/Core/interface/FWEventItem.h"
#include "Fireworks/Tracks/interface/TrackUtils.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
#include "DataFormats/MuonDetId/interface/DTChamberId.h"
#include "Fireworks/Core/interface/fwLog.h"
class FWTracksModulesProxyBuilder : public FWSimpleProxyBuilderTemplate<reco::Track> {
public:
FWTracksModulesProxyBuilder(void) {}
~FWTracksModulesProxyBuilder(void) override {}
REGISTER_PROXYBUILDER_METHODS();
static bool representsSubPart(void);
private:
using FWSimpleProxyBuilderTemplate<reco::Track>::build;
void build(const reco::Track& iData, unsigned int iIndex, TEveElement& oItemHolder, const FWViewContext*) override;
public:
FWTracksModulesProxyBuilder(const FWTracksModulesProxyBuilder&) = delete; // stop default
const FWTracksModulesProxyBuilder& operator=(const FWTracksModulesProxyBuilder&) = delete; // stop default
};
void FWTracksModulesProxyBuilder::build(const reco::Track& track,
unsigned int iIndex,
TEveElement& oItemHolder,
const FWViewContext*) {
if (track.extra().isAvailable()) {
const FWGeometry* geom = item()->getGeom();
for (trackingRecHit_iterator recIt = track.recHitsBegin(), recItEnd = track.recHitsEnd(); recIt != recItEnd;
++recIt) {
DetId detid = (*recIt)->geographicalId();
if ((*recIt)->isValid()) {
if (detid.det() == DetId::Muon) {
if (detid.subdetId() == MuonSubdetId::DT)
detid = DetId(DTChamberId(detid)); // get rid of layer bits
}
TEveGeoShape* shape = geom->getEveShape(detid);
if (shape) {
setupAddElement(shape, &oItemHolder);
} else {
fwLog(fwlog::kDebug) << "Failed to get shape extract for track-id " << iIndex << ", tracking rec hit: "
<< "\n"
<< fireworks::info(detid) << std::endl;
}
}
}
}
}
bool FWTracksModulesProxyBuilder::representsSubPart(void) { return true; }
REGISTER_FWPROXYBUILDER(FWTracksModulesProxyBuilder,
reco::Track,
"TrackDets",
FWViewType::kAll3DBits | FWViewType::kAllRPZBits);
|