20 for(
int i = 0; i <
hits_.size(); i++)
delete hits_.at(i);
33 std::map<EVENT::TrackerHit*, TrackerHit*> hit_map;
37 for (
int ihit = 0; ihit < tracker_hits->getNumberOfElements(); ++ihit) {
40 IMPL::TrackerHitImpl* lc_tracker_hit =
static_cast<IMPL::TrackerHitImpl*
>(tracker_hits->getElementAt(ihit));
47 double hit_position[3] = {
48 lc_tracker_hit->getPosition()[1],
49 lc_tracker_hit->getPosition()[2],
50 lc_tracker_hit->getPosition()[0]
58 tracker_hit->
setTime(lc_tracker_hit->getTime());
61 tracker_hit->
setCharge(lc_tracker_hit->getEDep());
65 hit_map[lc_tracker_hit] = tracker_hit;
66 hits_.push_back(tracker_hit);
78 for (
int itrack = 0; itrack < tracks->getNumberOfElements(); ++itrack) {
81 EVENT::Track* lc_track =
static_cast<EVENT::Track*
>(tracks->getElementAt(itrack));
87 track->setTrackParameters(lc_track->getD0(),
90 lc_track->getTanLambda(),
94 track->setType(lc_track->getType());
97 track->setChi2(lc_track->getChi2());
101 const EVENT::TrackState* track_state
102 = lc_track->getTrackState(EVENT::TrackState::AtCalorimeter);
103 double position_at_ecal[3] = {
104 track_state->getReferencePoint()[1],
105 track_state->getReferencePoint()[2],
106 track_state->getReferencePoint()[0]
108 track->setPositionAtEcal(position_at_ecal);
112 EVENT::LCCollection* gbl_kink_data =
117 UTIL::LCRelationNavigator* gbl_kink_data_nav
118 =
new UTIL::LCRelationNavigator(gbl_kink_data);
121 EVENT::LCObjectVec gbl_kink_data_list
122 = gbl_kink_data_nav->getRelatedFromObjects(lc_track);
126 if (gbl_kink_data_list.size() != 1) {
127 throw std::runtime_error(
"[ SvtDataProcessor ]: The collection "
129 +
" has the wrong data structure.");
133 IMPL::LCGenericObjectImpl* gbl_kink_datum
134 =
static_cast<IMPL::LCGenericObjectImpl*
>(gbl_kink_data_list.at(0));
137 for (
int ikink = 0; ikink < gbl_kink_datum->getNDouble(); ++ikink) {
138 track->setLambdaKink(ikink, gbl_kink_datum->getFloatVal(ikink));
139 track->setPhiKink(ikink, gbl_kink_datum->getDoubleVal(ikink));
142 delete gbl_kink_data_nav;
146 EVENT::LCCollection* track_data =
static_cast<EVENT::LCCollection*
>(
151 UTIL::LCRelationNavigator* track_data_nav
152 =
new UTIL::LCRelationNavigator(track_data);
155 EVENT::LCObjectVec track_data_list = track_data_nav->getRelatedFromObjects(lc_track);
159 if (track_data_list.size() == 1) {
162 IMPL::LCGenericObjectImpl* track_datum =
static_cast<IMPL::LCGenericObjectImpl*
>(track_data_list.at(0));
166 if (track_datum->getNDouble() > 14 || track_datum->getNFloat() > 7
167 || track_datum->getNInt() != 1) {
168 throw std::runtime_error(
"[ SvtDataProcessor ]: The collection "
170 +
" has the wrong structure.");
174 for (
int iso_index = 0; iso_index < track_datum->getNDouble(); ++iso_index) {
175 track->setIsolation(iso_index, track_datum->getDoubleVal(iso_index));
179 track->setTrackTime(track_datum->getFloatVal(0));
182 track->setTrackVolume(track_datum->getIntVal(0));
185 delete track_data_nav;
188 EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits();
193 for (
auto hit : lc_tracker_hits) {
196 track->addHit(hit_map[hit]);