obj_types.cpp 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. #include "filval/filval.hpp"
  2. #include "filval/root/filval.hpp"
  3. #include "TrackingNtuple.h"
  4. using namespace std;
  5. using namespace fv;
  6. using namespace fv::root;
  7. using namespace std;
  8. typedef TreeDataSet<TrackingNtuple> TrackingDataSet;
  9. //#^#=========================================================================
  10. //==============PIXEL REC HIT=================================================
  11. //============================================================================
  12. struct PixRecHit {
  13. unsigned int idx;
  14. unsigned short det;
  15. unsigned short lay;
  16. unsigned int detId;
  17. unsigned short simType;
  18. float x;
  19. float y;
  20. float z;
  21. float xx;
  22. float xy;
  23. float yy;
  24. float yz;
  25. float zz;
  26. float zx;
  27. float radL;
  28. float bbxi;
  29. vector<int> trkIdx;
  30. vector<int> seeIdx;
  31. vector<int> simHitIdx;
  32. vector<float> chargeFraction;
  33. };
  34. Value<vector<PixRecHit>>*
  35. register_pixrec_hits(TrackingDataSet &tds){
  36. auto& builder = func<std::vector<PixRecHit>(vector<unsigned short>,
  37. vector<unsigned short>,
  38. vector<unsigned int>,
  39. vector<unsigned short>,
  40. vector<float>,
  41. vector<float>,
  42. vector<float>,
  43. vector<float>,
  44. vector<float>,
  45. vector<float>,
  46. vector<float>,
  47. vector<float>,
  48. vector<float>,
  49. vector<float>,
  50. vector<float>,
  51. vector<vector<int>>,
  52. vector<vector<int>>,
  53. vector<vector<int>>,
  54. vector<vector<float>>)>("build_pixrec_hits",
  55. FUNC(([](const vector<unsigned short>& det,
  56. const vector<unsigned short>& lay,
  57. const vector<unsigned int>& detId,
  58. const vector<unsigned short>& simType,
  59. const vector<float>& x,
  60. const vector<float>& y,
  61. const vector<float>& z,
  62. const vector<float>& xx,
  63. const vector<float>& xy,
  64. const vector<float>& yy,
  65. const vector<float>& yz,
  66. const vector<float>& zz,
  67. const vector<float>& zx,
  68. const vector<float>& radL,
  69. const vector<float>& bbxi,
  70. const vector<vector<int>>& trkIdx,
  71. const vector<vector<int>>& seeIdx,
  72. const vector<vector<int>>& simHitIdx,
  73. const vector<vector<float>>& chargeFraction){
  74. std::vector<PixRecHit> pixrec_hits;
  75. for(int i=0; i<det.size(); i++)
  76. pixrec_hits.push_back({i,
  77. det[i],
  78. lay[i],
  79. detId[i],
  80. simType[i],
  81. x[i],
  82. y[i],
  83. z[i],
  84. xx[i],
  85. xy[i],
  86. yy[i],
  87. yz[i],
  88. zz[i],
  89. zx[i],
  90. radL[i],
  91. bbxi[i],
  92. trkIdx[i],
  93. seeIdx[i],
  94. simHitIdx[i],
  95. chargeFraction[i]
  96. });
  97. return pixrec_hits;
  98. })));
  99. return apply(builder,
  100. fv::tuple(tds.track_branch_obj<vector<unsigned short>>("pix_det"),
  101. tds.track_branch_obj<vector<unsigned short>>("pix_lay"),
  102. tds.track_branch_obj<vector<unsigned int>>("pix_detId"),
  103. tds.track_branch_obj<vector<unsigned short>>("pix_simType"),
  104. tds.track_branch_obj<vector<float>>("pix_x"),
  105. tds.track_branch_obj<vector<float>>("pix_y"),
  106. tds.track_branch_obj<vector<float>>("pix_z"),
  107. tds.track_branch_obj<vector<float>>("pix_xx"),
  108. tds.track_branch_obj<vector<float>>("pix_xy"),
  109. tds.track_branch_obj<vector<float>>("pix_yy"),
  110. tds.track_branch_obj<vector<float>>("pix_yz"),
  111. tds.track_branch_obj<vector<float>>("pix_zz"),
  112. tds.track_branch_obj<vector<float>>("pix_zx"),
  113. tds.track_branch_obj<vector<float>>("pix_radL"),
  114. tds.track_branch_obj<vector<float>>("pix_bbxi"),
  115. tds.track_branch_obj<vector<vector<int>>>("pix_trkIdx"),
  116. tds.track_branch_obj<vector<vector<int>>>("pix_seeIdx"),
  117. tds.track_branch_obj<vector<vector<int>>>("pix_simHitIdx"),
  118. tds.track_branch_obj<vector<vector<float>>>("pix_chargeFraction")),
  119. "pixrec_hits");
  120. }
  121. //#^#=========================================================================
  122. //===================SIM HIT==================================================
  123. //============================================================================
  124. struct SimHit {
  125. unsigned int idx;
  126. unsigned short det;
  127. unsigned short lay;
  128. unsigned int detId;
  129. float x;
  130. float y;
  131. float z;
  132. int particle;
  133. short process;
  134. float eloss;
  135. float tof;
  136. int simTrkIdx;
  137. vector<int> hitIdx;
  138. vector<int> hitType;
  139. };
  140. Value<vector<SimHit>>*
  141. register_sim_hits(TrackingDataSet &tds){
  142. auto& builder =
  143. func<std::vector<SimHit>(vector<unsigned short>, // det;
  144. vector<unsigned short>, // lay;
  145. vector<unsigned int>, // detId;
  146. vector<float>, // x;
  147. vector<float>, // y;
  148. vector<float>, // z;
  149. vector<int> , // particle;
  150. vector<short>, // process;
  151. vector<float>, // eloss;
  152. vector<float>, // tof;
  153. vector<int> , // simTrkIdx;
  154. vector<vector<int>>, // hitIdx;
  155. vector<vector<int>> // hitType;
  156. )>("build_sim_hits", FUNC(([](
  157. const vector<unsigned short>& det,
  158. const vector<unsigned short>& lay,
  159. const vector<unsigned int>& detId,
  160. const vector<float>& x,
  161. const vector<float>& y,
  162. const vector<float>& z,
  163. const vector<int>& particle,
  164. const vector<short>& process,
  165. const vector<float>& eloss,
  166. const vector<float>& tof,
  167. const vector<int>& simTrkIdx,
  168. const vector<vector<int>>& hitIdx,
  169. const vector<vector<int>>& hitType
  170. ){
  171. std::vector<SimHit> sim_hits;
  172. for(int i=0; i<det.size(); i++)
  173. sim_hits.push_back({i,
  174. det[i],
  175. lay[i],
  176. detId[i],
  177. x[i],
  178. y[i],
  179. z[i],
  180. particle[i],
  181. process[i],
  182. eloss[i],
  183. tof[i],
  184. simTrkIdx[i],
  185. hitIdx[i],
  186. hitType[i]});
  187. return sim_hits;
  188. })));
  189. return apply(builder,
  190. fv::tuple(tds.track_branch_obj<vector<unsigned short>>("simhit_det"),
  191. tds.track_branch_obj<vector<unsigned short>>("simhit_lay"),
  192. tds.track_branch_obj<vector<unsigned int>>("simhit_detId"),
  193. tds.track_branch_obj<vector<float>>("simhit_x"),
  194. tds.track_branch_obj<vector<float>>("simhit_y"),
  195. tds.track_branch_obj<vector<float>>("simhit_z"),
  196. tds.track_branch_obj<vector<int>>("simhit_particle"),
  197. tds.track_branch_obj<vector<short>>("simhit_process"),
  198. tds.track_branch_obj<vector<float>>("simhit_eloss"),
  199. tds.track_branch_obj<vector<float>>("simhit_tof"),
  200. tds.track_branch_obj<vector<int>>("simhit_simTrkIdx"),
  201. tds.track_branch_obj<vector<vector<int>>>("simhit_hitIdx"),
  202. tds.track_branch_obj<vector<vector<int>>>("simhit_hitType")),
  203. "sim_hits");
  204. }
  205. //#^#=========================================================================
  206. //=======================SEED=================================================
  207. //============================================================================
  208. struct Seed {
  209. unsigned int idx;
  210. short fitok;
  211. float px;
  212. float py;
  213. float pz;
  214. float pt;
  215. float eta;
  216. float phi;
  217. float dxy;
  218. float dz;
  219. float ptErr;
  220. float etaErr;
  221. float phiErr;
  222. float dxyErr;
  223. float dzErr;
  224. float chi2;
  225. int q;
  226. unsigned int nValid;
  227. unsigned int nPixel;
  228. unsigned int nGlued;
  229. unsigned int nStrip;
  230. unsigned int algo;
  231. unsigned int algoOriginal;
  232. int trkIdx;
  233. vector<float> shareFrac;
  234. vector<int> simTrkIdx;
  235. vector<int> hitIdx;
  236. vector<int> hitType;
  237. unsigned int offset;
  238. unsigned char hitsMask;
  239. int subDet2;
  240. float dRz2;
  241. float dPhi2;
  242. float dRz2Pos;
  243. float dPhi2Pos;
  244. int subDet1;
  245. float dRz1;
  246. float dPhi1;
  247. float dRz1Pos;
  248. float dPhi1Pos;
  249. float hoe1;
  250. float hoe2;
  251. float superClusterEnergy;
  252. float superClusterEta;
  253. float superClusterPhi;
  254. float superClusterEt;
  255. int superClusterIdx;
  256. unsigned int ecalDriven;
  257. unsigned int trkDriven;
  258. };
  259. Value<vector<Seed>>*
  260. register_seeds(TrackingDataSet &tds){
  261. auto& builder = func<std::vector<Seed>(vector<short>, // fitok;
  262. vector<float>, // px;
  263. vector<float>, // py;
  264. vector<float>, // pz;
  265. vector<float>, // pt;
  266. vector<float>, // eta;
  267. vector<float>, // phi;
  268. vector<float>, // dxy;
  269. vector<float>, // dz;
  270. vector<float>, // ptErr;
  271. vector<float>, // etaErr;
  272. vector<float>, // phiErr;
  273. vector<float>, // dxyErr;
  274. vector<float>, // dzErr;
  275. vector<float>, // chi2;
  276. vector<int>, // q;
  277. vector<unsigned int>, // nValid;
  278. vector<unsigned int>, // nPixel;
  279. vector<unsigned int>, // nGlued;
  280. vector<unsigned int>, // nStrip;
  281. vector<unsigned int>, // algo;
  282. vector<unsigned int>, // algoOriginal;
  283. vector<int>, // trkIdx;
  284. vector<vector<float> >, // shareFrac;
  285. vector<vector<int> >, // simTrkIdx;
  286. vector<vector<int> >, // hitIdx;
  287. vector<vector<int> >, // hitType;
  288. vector<unsigned int>, // offset;
  289. vector<unsigned char>, // hitsMask;
  290. vector<int>, // subDet2;
  291. vector<float>, // dRz2;
  292. vector<float>, // dPhi2;
  293. vector<float>, // dRz2Pos;
  294. vector<float>, // dPhi2Pos;
  295. vector<int>, // subDet1;
  296. vector<float>, // dRz1;
  297. vector<float>, // dPhi1;
  298. vector<float>, // dRz1Pos;
  299. vector<float>, // dPhi1Pos;
  300. vector<float>, // hoe1;
  301. vector<float>, // hoe2;
  302. vector<float>, // superClusterEnergy;
  303. vector<float>, // superClusterEta;
  304. vector<float>, // superClusterPhi;
  305. vector<float>, // superClusterEt;
  306. vector<int>, // superClusterIdx;
  307. vector<unsigned int>, // ecalDriven;
  308. vector<unsigned int> // trkDriven;
  309. )>("build_seeds", FUNC(([](
  310. const vector<short>& fitok,
  311. const vector<float>& px,
  312. const vector<float>& py,
  313. const vector<float>& pz,
  314. const vector<float>& pt,
  315. const vector<float>& eta,
  316. const vector<float>& phi,
  317. const vector<float>& dxy,
  318. const vector<float>& dz,
  319. const vector<float>& ptErr,
  320. const vector<float>& etaErr,
  321. const vector<float>& phiErr,
  322. const vector<float>& dxyErr,
  323. const vector<float>& dzErr,
  324. const vector<float>& chi2,
  325. const vector<int>& q,
  326. const vector<unsigned int>& nValid,
  327. const vector<unsigned int>& nPixel,
  328. const vector<unsigned int>& nGlued,
  329. const vector<unsigned int>& nStrip,
  330. const vector<unsigned int>& algo,
  331. const vector<unsigned int>& algoOriginal,
  332. const vector<int>& trkIdx,
  333. const vector<vector<float> >& shareFrac,
  334. const vector<vector<int> >& simTrkIdx,
  335. const vector<vector<int> >& hitIdx,
  336. const vector<vector<int> >& hitType,
  337. const vector<unsigned int>& offset,
  338. const vector<unsigned char>& hitsMask,
  339. const vector<int>& subDet2,
  340. const vector<float>& dRz2,
  341. const vector<float>& dPhi2,
  342. const vector<float>& dRz2Pos,
  343. const vector<float>& dPhi2Pos,
  344. const vector<int>& subDet1,
  345. const vector<float>& dRz1,
  346. const vector<float>& dPhi1,
  347. const vector<float>& dRz1Pos,
  348. const vector<float>& dPhi1Pos,
  349. const vector<float>& hoe1,
  350. const vector<float>& hoe2,
  351. const vector<float>& superClusterEnergy,
  352. const vector<float>& superClusterEta,
  353. const vector<float>& superClusterPhi,
  354. const vector<float>& superClusterEt,
  355. const vector<int>& superClusterIdx,
  356. const vector<unsigned int>& ecalDriven,
  357. const vector<unsigned int>& trkDriven){
  358. std::vector<Seed> seeds;
  359. for(int i=0; i<fitok.size(); i++)
  360. seeds.push_back({i,
  361. fitok[i],
  362. px[i],
  363. py[i],
  364. pz[i],
  365. pt[i],
  366. eta[i],
  367. phi[i],
  368. dxy[i],
  369. dz[i],
  370. ptErr[i],
  371. etaErr[i],
  372. phiErr[i],
  373. dxyErr[i],
  374. dzErr[i],
  375. chi2[i],
  376. q[i],
  377. nValid[i],
  378. nPixel[i],
  379. nGlued[i],
  380. nStrip[i],
  381. algo[i],
  382. algoOriginal[i],
  383. trkIdx[i],
  384. shareFrac[i],
  385. simTrkIdx[i],
  386. hitIdx[i],
  387. hitType[i],
  388. offset[i],
  389. hitsMask[i],
  390. subDet2[i],
  391. dRz2[i],
  392. dPhi2[i],
  393. dRz2Pos[i],
  394. dPhi2Pos[i],
  395. subDet1[i],
  396. dRz1[i],
  397. dPhi1[i],
  398. dRz1Pos[i],
  399. dPhi1Pos[i],
  400. hoe1[i],
  401. hoe2[i],
  402. superClusterEnergy[i],
  403. superClusterEta[i],
  404. superClusterPhi[i],
  405. superClusterEt[i],
  406. superClusterIdx[i],
  407. ecalDriven[i],
  408. trkDriven[i]});
  409. return seeds;
  410. })));
  411. return apply(builder,
  412. fv::tuple(tds.track_branch_obj<vector<short>>("see_fitok"),
  413. tds.track_branch_obj<vector<float>>("see_px"),
  414. tds.track_branch_obj<vector<float>>("see_py"),
  415. tds.track_branch_obj<vector<float>>("see_pz"),
  416. tds.track_branch_obj<vector<float>>("see_pt"),
  417. tds.track_branch_obj<vector<float>>("see_eta"),
  418. tds.track_branch_obj<vector<float>>("see_phi"),
  419. tds.track_branch_obj<vector<float>>("see_dxy"),
  420. tds.track_branch_obj<vector<float>>("see_dz"),
  421. tds.track_branch_obj<vector<float>>("see_ptErr"),
  422. tds.track_branch_obj<vector<float>>("see_etaErr"),
  423. tds.track_branch_obj<vector<float>>("see_phiErr"),
  424. tds.track_branch_obj<vector<float>>("see_dxyErr"),
  425. tds.track_branch_obj<vector<float>>("see_dzErr"),
  426. tds.track_branch_obj<vector<float>>("see_chi2"),
  427. tds.track_branch_obj<vector<int>>("see_q"),
  428. tds.track_branch_obj<vector<unsigned int>>("see_nValid"),
  429. tds.track_branch_obj<vector<unsigned int>>("see_nPixel"),
  430. tds.track_branch_obj<vector<unsigned int>>("see_nGlued"),
  431. tds.track_branch_obj<vector<unsigned int>>("see_nStrip"),
  432. tds.track_branch_obj<vector<unsigned int>>("see_algo"),
  433. tds.track_branch_obj<vector<unsigned int>>("see_algoOriginal"),
  434. tds.track_branch_obj<vector<int>>("see_trkIdx"),
  435. tds.track_branch_obj<vector<vector<float> >> ("see_shareFrac"),
  436. tds.track_branch_obj<vector<vector<int> >>("see_simTrkIdx"),
  437. tds.track_branch_obj<vector<vector<int> >>("see_hitIdx"),
  438. tds.track_branch_obj<vector<vector<int> >>("see_hitType"),
  439. tds.track_branch_obj<vector<unsigned int>>("see_offset"),
  440. tds.track_branch_obj<vector<unsigned char>>("see_hitsMask"),
  441. tds.track_branch_obj<vector<int>>("see_subDet2"),
  442. tds.track_branch_obj<vector<float>>("see_dRz2"),
  443. tds.track_branch_obj<vector<float>>("see_dPhi2"),
  444. tds.track_branch_obj<vector<float>>("see_dRz2Pos"),
  445. tds.track_branch_obj<vector<float>>("see_dPhi2Pos"),
  446. tds.track_branch_obj<vector<int>>("see_subDet1"),
  447. tds.track_branch_obj<vector<float>>("see_dRz1"),
  448. tds.track_branch_obj<vector<float>>("see_dPhi1"),
  449. tds.track_branch_obj<vector<float>>("see_dRz1Pos"),
  450. tds.track_branch_obj<vector<float>>("see_dPhi1Pos"),
  451. tds.track_branch_obj<vector<float>>("see_hoe1"),
  452. tds.track_branch_obj<vector<float>>("see_hoe2"),
  453. tds.track_branch_obj<vector<float>>("see_superClusterEnergy"),
  454. tds.track_branch_obj<vector<float>>("see_superClusterEta"),
  455. tds.track_branch_obj<vector<float>>("see_superClusterPhi"),
  456. tds.track_branch_obj<vector<float>>("see_superClusterEt"),
  457. tds.track_branch_obj<vector<int>>("see_superClusterIdx"),
  458. tds.track_branch_obj<vector<unsigned int>>("see_ecalDriven"),
  459. tds.track_branch_obj<vector<unsigned int>>("see_trkDriven")),
  460. "seeds");
  461. }
  462. //#^#=========================================================================
  463. //=======================TRACK================================================
  464. //============================================================================
  465. struct Track{
  466. unsigned int idx;
  467. float px;
  468. float py;
  469. float pz;
  470. float pt;
  471. float inner_px;
  472. float inner_py;
  473. float inner_pz;
  474. float inner_pt;
  475. float outer_px;
  476. float outer_py;
  477. float outer_pz;
  478. float outer_pt;
  479. float eta;
  480. float lambda;
  481. float cotTheta;
  482. float phi;
  483. float dxy;
  484. float dz;
  485. float ptErr;
  486. float etaErr;
  487. float lambdaErr;
  488. float phiErr;
  489. float dxyErr;
  490. float dzErr;
  491. float refpoint_x;
  492. float refpoint_y;
  493. float refpoint_z;
  494. float nChi2;
  495. int q;
  496. unsigned int nValid;
  497. unsigned int nInvalid;
  498. unsigned int nPixel;
  499. unsigned int nStrip;
  500. unsigned int nPixelLay;
  501. unsigned int nStripLay;
  502. unsigned int n3DLay;
  503. unsigned int nOuterLost;
  504. unsigned int nInnerLost;
  505. unsigned int algo;
  506. unsigned int originalAlgo;
  507. ULong64_t algoMask;
  508. unsigned int stopReason;
  509. short isHP;
  510. int seedIdx;
  511. float vtxx;
  512. float vtxy;
  513. float vtxz;
  514. vector<float> shareFrac;
  515. vector<int> simTrkIdx;
  516. vector<int> hitIdx;
  517. vector<int> hitType;
  518. int genIdx;
  519. float genDR;
  520. };
  521. Value<vector<Track>>*
  522. register_tracks(TrackingDataSet &tds){
  523. auto& builder= func<std::vector<Track>(vector<float>, // px;
  524. vector<float>, // py;
  525. vector<float>, // pz;
  526. vector<float>, // pt;
  527. vector<float>, // inner_px;
  528. vector<float>, // inner_py;
  529. vector<float>, // inner_pz;
  530. vector<float>, // inner_pt;
  531. vector<float>, // outer_px;
  532. vector<float>, // outer_py;
  533. vector<float>, // outer_pz;
  534. vector<float>, // outer_pt;
  535. vector<float>, // eta;
  536. vector<float>, // lambda;
  537. vector<float>, // cotTheta;
  538. vector<float>, // phi;
  539. vector<float>, // dxy;
  540. vector<float>, // dz;
  541. vector<float>, // ptErr;
  542. vector<float>, // etaErr;
  543. vector<float>, // lambdaErr;
  544. vector<float>, // phiErr;
  545. vector<float>, // dxyErr;
  546. vector<float>, // dzErr;
  547. vector<float>, // refpoint_x;
  548. vector<float>, // refpoint_y;
  549. vector<float>, // refpoint_z;
  550. vector<float>, // nChi2;
  551. vector<int>, // q;
  552. vector<unsigned int>, // nValid;
  553. vector<unsigned int>, // nInvalid;
  554. vector<unsigned int>, // nPixel;
  555. vector<unsigned int>, // nStrip;
  556. vector<unsigned int>, // nPixelLay;
  557. vector<unsigned int>, // nStripLay;
  558. vector<unsigned int>, // n3DLay;
  559. vector<unsigned int>, // nOuterLost;
  560. vector<unsigned int>, // nInnerLost;
  561. vector<unsigned int>, // algo;
  562. vector<unsigned int>, // originalAlgo;
  563. vector<ULong64_t>, // algoMask;
  564. vector<unsigned int>, // stopReason;
  565. vector<short>, // isHP;
  566. vector<int>, // seedIdx;
  567. vector<float>, // vtxx;
  568. vector<float>, // vtxy;
  569. vector<float>, // vtxz;
  570. vector<vector<float>>, // shareFrac;
  571. vector<vector<int>>, // simTrkIdx;
  572. vector<vector<int>>, // hitIdx;
  573. vector<vector<int>>, // hitType;
  574. vector<int>, // genIdx;
  575. vector<float> // genDR;
  576. )>("build_tracks", FUNC(([](const vector<float>& px,
  577. const vector<float>& py,
  578. const vector<float>& pz,
  579. const vector<float>& pt,
  580. const vector<float>& inner_px,
  581. const vector<float>& inner_py,
  582. const vector<float>& inner_pz,
  583. const vector<float>& inner_pt,
  584. const vector<float>& outer_px,
  585. const vector<float>& outer_py,
  586. const vector<float>& outer_pz,
  587. const vector<float>& outer_pt,
  588. const vector<float>& eta,
  589. const vector<float>& lambda,
  590. const vector<float>& cotTheta,
  591. const vector<float>& phi,
  592. const vector<float>& dxy,
  593. const vector<float>& dz,
  594. const vector<float>& ptErr,
  595. const vector<float>& etaErr,
  596. const vector<float>& lambdaErr,
  597. const vector<float>& phiErr,
  598. const vector<float>& dxyErr,
  599. const vector<float>& dzErr,
  600. const vector<float>& refpoint_x,
  601. const vector<float>& refpoint_y,
  602. const vector<float>& refpoint_z,
  603. const vector<float>& nChi2,
  604. const vector<int>& q,
  605. const vector<unsigned int>& nValid,
  606. const vector<unsigned int>& nInvalid,
  607. const vector<unsigned int>& nPixel,
  608. const vector<unsigned int>& nStrip,
  609. const vector<unsigned int>& nPixelLay,
  610. const vector<unsigned int>& nStripLay,
  611. const vector<unsigned int>& n3DLay,
  612. const vector<unsigned int>& nOuterLost,
  613. const vector<unsigned int>& nInnerLost,
  614. const vector<unsigned int>& algo,
  615. const vector<unsigned int>& originalAlgo,
  616. const vector<ULong64_t>& algoMask,
  617. const vector<unsigned int>& stopReason,
  618. const vector<short>& isHP,
  619. const vector<int>& seedIdx,
  620. const vector<float>& vtxx,
  621. const vector<float>& vtxy,
  622. const vector<float>& vtxz,
  623. const vector<vector<float>>& shareFrac,
  624. const vector<vector<int>>& simTrkIdx,
  625. const vector<vector<int>>& hitIdx,
  626. const vector<vector<int>>& hitType,
  627. const vector<int>& genIdx,
  628. const vector<float>& genDR){
  629. std::vector<Track> tracks;
  630. for(int i=0; i<px.size(); i++)
  631. tracks.push_back({i,
  632. px[i],
  633. py[i],
  634. pz[i],
  635. pt[i],
  636. inner_px[i],
  637. inner_py[i],
  638. inner_pz[i],
  639. inner_pt[i],
  640. outer_px[i],
  641. outer_py[i],
  642. outer_pz[i],
  643. outer_pt[i],
  644. eta[i],
  645. lambda[i],
  646. cotTheta[i],
  647. phi[i],
  648. dxy[i],
  649. dz[i],
  650. ptErr[i],
  651. etaErr[i],
  652. lambdaErr[i],
  653. phiErr[i],
  654. dxyErr[i],
  655. dzErr[i],
  656. refpoint_x[i],
  657. refpoint_y[i],
  658. refpoint_z[i],
  659. nChi2[i],
  660. q[i],
  661. nValid[i],
  662. nInvalid[i],
  663. nPixel[i],
  664. nStrip[i],
  665. nPixelLay[i],
  666. nStripLay[i],
  667. n3DLay[i],
  668. nOuterLost[i],
  669. nInnerLost[i],
  670. algo[i],
  671. originalAlgo[i],
  672. algoMask[i],
  673. stopReason[i],
  674. isHP[i],
  675. seedIdx[i],
  676. vtxx[i],
  677. vtxy[i],
  678. vtxz[i],
  679. shareFrac[i],
  680. simTrkIdx[i],
  681. hitIdx[i],
  682. hitType[i],
  683. genIdx[i],
  684. genDR[i]});
  685. return tracks;
  686. })));
  687. return apply(builder,
  688. fv::tuple(tds.track_branch_obj<vector<float>>("trk_px"),
  689. tds.track_branch_obj<vector<float>>("trk_py"),
  690. tds.track_branch_obj<vector<float>>("trk_pz"),
  691. tds.track_branch_obj<vector<float>>("trk_pt"),
  692. tds.track_branch_obj<vector<float>>("trk_inner_px"),
  693. tds.track_branch_obj<vector<float>>("trk_inner_py"),
  694. tds.track_branch_obj<vector<float>>("trk_inner_pz"),
  695. tds.track_branch_obj<vector<float>>("trk_inner_pt"),
  696. tds.track_branch_obj<vector<float>>("trk_outer_px"),
  697. tds.track_branch_obj<vector<float>>("trk_outer_py"),
  698. tds.track_branch_obj<vector<float>>("trk_outer_pz"),
  699. tds.track_branch_obj<vector<float>>("trk_outer_pt"),
  700. tds.track_branch_obj<vector<float>>("trk_eta"),
  701. tds.track_branch_obj<vector<float>>("trk_lambda"),
  702. tds.track_branch_obj<vector<float>>("trk_cotTheta"),
  703. tds.track_branch_obj<vector<float>>("trk_phi"),
  704. tds.track_branch_obj<vector<float>>("trk_dxy"),
  705. tds.track_branch_obj<vector<float>>("trk_dz"),
  706. tds.track_branch_obj<vector<float>>("trk_ptErr"),
  707. tds.track_branch_obj<vector<float>>("trk_etaErr"),
  708. tds.track_branch_obj<vector<float>>("trk_lambdaErr"),
  709. tds.track_branch_obj<vector<float>>("trk_phiErr"),
  710. tds.track_branch_obj<vector<float>>("trk_dxyErr"),
  711. tds.track_branch_obj<vector<float>>("trk_dzErr"),
  712. tds.track_branch_obj<vector<float>>("trk_refpoint_x"),
  713. tds.track_branch_obj<vector<float>>("trk_refpoint_y"),
  714. tds.track_branch_obj<vector<float>>("trk_refpoint_z"),
  715. tds.track_branch_obj<vector<float>>("trk_nChi2"),
  716. tds.track_branch_obj<vector<int>>("trk_q"),
  717. tds.track_branch_obj<vector<unsigned int>>("trk_nValid"),
  718. tds.track_branch_obj<vector<unsigned int>>("trk_nInvalid"),
  719. tds.track_branch_obj<vector<unsigned int>>("trk_nPixel"),
  720. tds.track_branch_obj<vector<unsigned int>>("trk_nStrip"),
  721. tds.track_branch_obj<vector<unsigned int>>("trk_nPixelLay"),
  722. tds.track_branch_obj<vector<unsigned int>>("trk_nStripLay"),
  723. tds.track_branch_obj<vector<unsigned int>>("trk_n3DLay"),
  724. tds.track_branch_obj<vector<unsigned int>>("trk_nOuterLost"),
  725. tds.track_branch_obj<vector<unsigned int>>("trk_nInnerLost"),
  726. tds.track_branch_obj<vector<unsigned int>>("trk_algo"),
  727. tds.track_branch_obj<vector<unsigned int>>("trk_originalAlgo"),
  728. tds.track_branch_obj<vector<ULong64_t>>("trk_algoMask"),
  729. tds.track_branch_obj<vector<unsigned int>>("trk_stopReason"),
  730. tds.track_branch_obj<vector<short>>("trk_isHP"),
  731. tds.track_branch_obj<vector<int>>("trk_seedIdx"),
  732. tds.track_branch_obj<vector<float>>("trk_vtxx"),
  733. tds.track_branch_obj<vector<float>>("trk_vtxy"),
  734. tds.track_branch_obj<vector<float>>("trk_vtxz"),
  735. tds.track_branch_obj<vector<vector<float>>>("trk_shareFrac"),
  736. tds.track_branch_obj<vector<vector<int>>>("trk_simTrkIdx"),
  737. tds.track_branch_obj<vector<vector<int>>>("trk_hitIdx"),
  738. tds.track_branch_obj<vector<vector<int>>>("trk_hitType"),
  739. tds.track_branch_obj<vector<int>>("trk_genIdx"),
  740. tds.track_branch_obj<vector<float>>("trk_genDR")),
  741. "tracks");
  742. }
  743. //#^#=========================================================================
  744. //===================SIM TRACK================================================
  745. //============================================================================
  746. struct SimTrack{
  747. unsigned int idx;
  748. int event;
  749. int bunchCrossing;
  750. int pdgId;
  751. float px;
  752. float py;
  753. float pz;
  754. float pt;
  755. float eta;
  756. float phi;
  757. float pca_pt;
  758. float pca_eta;
  759. float pca_lambda;
  760. float pca_cotTheta;
  761. float pca_phi;
  762. float pca_dxy;
  763. float pca_dz;
  764. int q;
  765. unsigned int nValid;
  766. unsigned int nPixel;
  767. unsigned int nStrip;
  768. unsigned int nLay;
  769. unsigned int nPixelLay;
  770. unsigned int n3DLay;
  771. vector<int> trkIdx;
  772. vector<float> shareFrac;
  773. int parentVtxIdx;
  774. vector<int> decayVtxIdx;
  775. vector<int> simHitIdx;
  776. };
  777. Value<vector<SimTrack>>*
  778. register_sim_tracks(TrackingDataSet &tds){
  779. auto& builder = func<std::vector<SimTrack>(vector<int>, // event;
  780. vector<int>, // bunchCrossing;
  781. vector<int>, // pdgId;
  782. vector<float>, // px;
  783. vector<float>, // py;
  784. vector<float>, // pz;
  785. vector<float>, // pt;
  786. vector<float>, // eta;
  787. vector<float>, // phi;
  788. vector<float>, // pca_pt;
  789. vector<float>, // pca_eta;
  790. vector<float>, // pca_lambda;
  791. vector<float>, // pca_cotTheta;
  792. vector<float>, // pca_phi;
  793. vector<float>, // pca_dxy;
  794. vector<float>, // pca_dz;
  795. vector<int>, // q;
  796. vector<unsigned int>, // nValid;
  797. vector<unsigned int>, // nPixel;
  798. vector<unsigned int>, // nStrip;
  799. vector<unsigned int>, // nLay;
  800. vector<unsigned int>, // nPixelLay;
  801. vector<unsigned int>, // n3DLay;
  802. vector<vector<int>>, // trkIdx;
  803. vector<vector<float>>, // shareFrac;
  804. vector<int>, // parentVtxIdx;
  805. vector<vector<int>>, // decayVtxIdx;
  806. vector<vector<int>> // simHitIdx;
  807. )>("build_sim_tracks", FUNC(([](
  808. const vector<int>& event,
  809. const vector<int>& bunchCrossing,
  810. const vector<int>& pdgId,
  811. const vector<float>& px,
  812. const vector<float>& py,
  813. const vector<float>& pz,
  814. const vector<float>& pt,
  815. const vector<float>& eta,
  816. const vector<float>& phi,
  817. const vector<float>& pca_pt,
  818. const vector<float>& pca_eta,
  819. const vector<float>& pca_lambda,
  820. const vector<float>& pca_cotTheta,
  821. const vector<float>& pca_phi,
  822. const vector<float>& pca_dxy,
  823. const vector<float>& pca_dz,
  824. const vector<int>& q,
  825. const vector<unsigned int>& nValid,
  826. const vector<unsigned int>& nPixel,
  827. const vector<unsigned int>& nStrip,
  828. const vector<unsigned int>& nLay,
  829. const vector<unsigned int>& nPixelLay,
  830. const vector<unsigned int>& n3DLay,
  831. const vector<vector<int>>& trkIdx,
  832. const vector<vector<float>>& shareFrac,
  833. const vector<int>& parentVtxIdx,
  834. const vector<vector<int>>& decayVtxIdx,
  835. const vector<vector<int>>& simHitIdx){
  836. std::vector<SimTrack> sim_tracks;
  837. for(int i=0; i<event.size(); i++)
  838. sim_tracks.push_back({i,
  839. event[i],
  840. bunchCrossing[i],
  841. pdgId[i],
  842. px[i],
  843. py[i],
  844. pz[i],
  845. pt[i],
  846. eta[i],
  847. phi[i],
  848. pca_pt[i],
  849. pca_eta[i],
  850. pca_lambda[i],
  851. pca_cotTheta[i],
  852. pca_phi[i],
  853. pca_dxy[i],
  854. pca_dz[i],
  855. q[i],
  856. nValid[i],
  857. nPixel[i],
  858. nStrip[i],
  859. nLay[i],
  860. nPixelLay[i],
  861. n3DLay[i],
  862. trkIdx[i],
  863. shareFrac[i],
  864. parentVtxIdx[i],
  865. decayVtxIdx[i],
  866. simHitIdx[i]});
  867. return sim_tracks;
  868. })));
  869. return apply(builder,
  870. fv::tuple(tds.track_branch_obj<vector<int>>("sim_event"),
  871. tds.track_branch_obj<vector<int>>("sim_bunchCrossing"),
  872. tds.track_branch_obj<vector<int>>("sim_pdgId"),
  873. tds.track_branch_obj<vector<float>>("sim_px"),
  874. tds.track_branch_obj<vector<float>>("sim_py"),
  875. tds.track_branch_obj<vector<float>>("sim_pz"),
  876. tds.track_branch_obj<vector<float>>("sim_pt"),
  877. tds.track_branch_obj<vector<float>>("sim_eta"),
  878. tds.track_branch_obj<vector<float>>("sim_phi"),
  879. tds.track_branch_obj<vector<float>>("sim_pca_pt"),
  880. tds.track_branch_obj<vector<float>>("sim_pca_eta"),
  881. tds.track_branch_obj<vector<float>>("sim_pca_lambda"),
  882. tds.track_branch_obj<vector<float>>("sim_pca_cotTheta"),
  883. tds.track_branch_obj<vector<float>>("sim_pca_phi"),
  884. tds.track_branch_obj<vector<float>>("sim_pca_dxy"),
  885. tds.track_branch_obj<vector<float>>("sim_pca_dz"),
  886. tds.track_branch_obj<vector<int>>("sim_q"),
  887. tds.track_branch_obj<vector<unsigned int>>("sim_nValid"),
  888. tds.track_branch_obj<vector<unsigned int>>("sim_nPixel"),
  889. tds.track_branch_obj<vector<unsigned int>>("sim_nStrip"),
  890. tds.track_branch_obj<vector<unsigned int>>("sim_nLay"),
  891. tds.track_branch_obj<vector<unsigned int>>("sim_nPixelLay"),
  892. tds.track_branch_obj<vector<unsigned int>>("sim_n3DLay"),
  893. tds.track_branch_obj<vector<vector<int>>>("sim_trkIdx"),
  894. tds.track_branch_obj<vector<vector<float>>>("sim_shareFrac"),
  895. tds.track_branch_obj<vector<int>>("sim_parentVtxIdx"),
  896. tds.track_branch_obj<vector<vector<int>>>("sim_decayVtxIdx"),
  897. tds.track_branch_obj<vector<vector<int>>>("sim_simHitIdx")),
  898. "sim_tracks");
  899. }