obj_types.cpp 46 KB

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