obj_types.cpp 48 KB

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