#include "filval/filval.hpp" #include "filval/root/filval.hpp" #include #include "TrackingNtuple.h" using namespace std; using namespace fv; using namespace fv::root; typedef TreeDataSet TrackingDataSet; //#^#========================================================================= //==============PIXEL REC HIT================================================= //============================================================================ struct PixRecHit { unsigned int idx; unsigned short det; unsigned short lay; unsigned short ladder_blade; unsigned int detId; unsigned short simType; float x; float y; float z; float xx; float xy; float yy; float yz; float zz; float zx; float radL; float bbxi; vector trkIdx; vector seeIdx; vector simHitIdx; vector chargeFraction; float phi() const { return atan2(x, y); } }; Value>* register_pixrec_hits(TrackingDataSet &tds){ auto builder = func(vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector, vector>, vector>, vector>, vector>)>("build_pixrec_hits", FUNC(([](const vector& det, const vector& lay, const vector& ladder_blade, const vector& detId, const vector& simType, const vector& x, const vector& y, const vector& z, const vector& xx, const vector& xy, const vector& yy, const vector& yz, const vector& zz, const vector& zx, const vector& radL, const vector& bbxi, const vector>& trkIdx, const vector>& seeIdx, const vector>& simHitIdx, const vector>& chargeFraction){ std::vector pixrec_hits; for(unsigned int i=0; i>("pix_det"), tds.track_branch_obj>("pix_lay"), tds.track_branch_obj>("pix_ladder_blade"), tds.track_branch_obj>("pix_detId"), tds.track_branch_obj>("pix_simType"), tds.track_branch_obj>("pix_x"), tds.track_branch_obj>("pix_y"), tds.track_branch_obj>("pix_z"), tds.track_branch_obj>("pix_xx"), tds.track_branch_obj>("pix_xy"), tds.track_branch_obj>("pix_yy"), tds.track_branch_obj>("pix_yz"), tds.track_branch_obj>("pix_zz"), tds.track_branch_obj>("pix_zx"), tds.track_branch_obj>("pix_radL"), tds.track_branch_obj>("pix_bbxi"), tds.track_branch_obj>>("pix_trkIdx"), tds.track_branch_obj>>("pix_seeIdx"), tds.track_branch_obj>>("pix_simHitIdx"), tds.track_branch_obj>>("pix_chargeFraction")), "pixrec_hits"); } //#^#========================================================================= //===================SIM HIT================================================== //============================================================================ struct SimHit { unsigned int idx; unsigned short det; unsigned short lay; unsigned int detId; float x; float y; float z; int particle; short process; float eloss; float tof; int simTrkIdx; vector hitIdx; vector hitType; }; Value>* register_sim_hits(TrackingDataSet &tds){ auto builder = func(vector, // det; vector, // lay; vector, // detId; vector, // x; vector, // y; vector, // z; vector , // particle; vector, // process; vector, // eloss; vector, // tof; vector , // simTrkIdx; vector>, // hitIdx; vector> // hitType; )>("build_sim_hits", FUNC(([]( const vector& det, const vector& lay, const vector& detId, const vector& x, const vector& y, const vector& z, const vector& particle, const vector& process, const vector& eloss, const vector& tof, const vector& simTrkIdx, const vector>& hitIdx, const vector>& hitType ){ std::vector sim_hits; for(unsigned int i=0; i>("simhit_det"), tds.track_branch_obj>("simhit_lay"), tds.track_branch_obj>("simhit_detId"), tds.track_branch_obj>("simhit_x"), tds.track_branch_obj>("simhit_y"), tds.track_branch_obj>("simhit_z"), tds.track_branch_obj>("simhit_particle"), tds.track_branch_obj>("simhit_process"), tds.track_branch_obj>("simhit_eloss"), tds.track_branch_obj>("simhit_tof"), tds.track_branch_obj>("simhit_simTrkIdx"), tds.track_branch_obj>>("simhit_hitIdx"), tds.track_branch_obj>>("simhit_hitType")), "sim_hits"); } //#^#========================================================================= //=======================SEED================================================= //============================================================================ struct Seed { unsigned int idx; short fitok; float px; float py; float pz; float pt; float eta; float phi; float dxy; float dz; float ptErr; float etaErr; float phiErr; float dxyErr; float dzErr; float chi2; int q; unsigned int nValid; unsigned int nPixel; unsigned int nGlued; unsigned int nStrip; unsigned int algo; unsigned int algoOriginal; int trkIdx; vector shareFrac; vector simTrkIdx; vector hitIdx; vector hitType; unsigned int offset; unsigned char hitsMask; int subDet2; float dRz2; float dPhi2; float dRz2Pos; float dPhi2Pos; int subDet1; float dRz1; float dPhi1; float dRz1Pos; float dPhi1Pos; float hoe1; float hoe2; float superClusterEnergy; float superClusterEta; float superClusterPhi; float superClusterEt; int superClusterIdx; unsigned int ecalDriven; unsigned int trkDriven; }; Value>* register_seeds(TrackingDataSet &tds){ auto builder = func(vector, // fitok; vector, // px; vector, // py; vector, // pz; vector, // pt; vector, // eta; vector, // phi; vector, // dxy; vector, // dz; vector, // ptErr; vector, // etaErr; vector, // phiErr; vector, // dxyErr; vector, // dzErr; vector, // chi2; vector, // q; vector, // nValid; vector, // nPixel; vector, // nGlued; vector, // nStrip; vector, // algo; vector, // algoOriginal; vector, // trkIdx; vector >, // shareFrac; vector >, // simTrkIdx; vector >, // hitIdx; vector >, // hitType; vector, // offset; vector, // hitsMask; vector, // subDet2; vector, // dRz2; vector, // dPhi2; vector, // dRz2Pos; vector, // dPhi2Pos; vector, // subDet1; vector, // dRz1; vector, // dPhi1; vector, // dRz1Pos; vector, // dPhi1Pos; vector, // hoe1; vector, // hoe2; vector, // superClusterEnergy; vector, // superClusterEta; vector, // superClusterPhi; vector, // superClusterEt; vector, // superClusterIdx; vector, // ecalDriven; vector // trkDriven; )>("build_seeds", FUNC(([]( const vector& fitok, const vector& px, const vector& py, const vector& pz, const vector& pt, const vector& eta, const vector& phi, const vector& dxy, const vector& dz, const vector& ptErr, const vector& etaErr, const vector& phiErr, const vector& dxyErr, const vector& dzErr, const vector& chi2, const vector& q, const vector& nValid, const vector& nPixel, const vector& nGlued, const vector& nStrip, const vector& algo, const vector& algoOriginal, const vector& trkIdx, const vector >& shareFrac, const vector >& simTrkIdx, const vector >& hitIdx, const vector >& hitType, const vector& offset, const vector& hitsMask, const vector& subDet2, const vector& dRz2, const vector& dPhi2, const vector& dRz2Pos, const vector& dPhi2Pos, const vector& subDet1, const vector& dRz1, const vector& dPhi1, const vector& dRz1Pos, const vector& dPhi1Pos, const vector& hoe1, const vector& hoe2, const vector& superClusterEnergy, const vector& superClusterEta, const vector& superClusterPhi, const vector& superClusterEt, const vector& superClusterIdx, const vector& ecalDriven, const vector& trkDriven){ std::vector seeds; for(unsigned int i=0; i>("see_fitok"), tds.track_branch_obj>("see_px"), tds.track_branch_obj>("see_py"), tds.track_branch_obj>("see_pz"), tds.track_branch_obj>("see_pt"), tds.track_branch_obj>("see_eta"), tds.track_branch_obj>("see_phi"), tds.track_branch_obj>("see_dxy"), tds.track_branch_obj>("see_dz"), tds.track_branch_obj>("see_ptErr"), tds.track_branch_obj>("see_etaErr"), tds.track_branch_obj>("see_phiErr"), tds.track_branch_obj>("see_dxyErr"), tds.track_branch_obj>("see_dzErr"), tds.track_branch_obj>("see_chi2"), tds.track_branch_obj>("see_q"), tds.track_branch_obj>("see_nValid"), tds.track_branch_obj>("see_nPixel"), tds.track_branch_obj>("see_nGlued"), tds.track_branch_obj>("see_nStrip"), tds.track_branch_obj>("see_algo"), tds.track_branch_obj>("see_algoOriginal"), tds.track_branch_obj>("see_trkIdx"), tds.track_branch_obj >> ("see_shareFrac"), tds.track_branch_obj >>("see_simTrkIdx"), tds.track_branch_obj >>("see_hitIdx"), tds.track_branch_obj >>("see_hitType"), tds.track_branch_obj>("see_offset"), tds.track_branch_obj>("see_hitsMask"), tds.track_branch_obj>("see_subDet2"), tds.track_branch_obj>("see_dRz2"), tds.track_branch_obj>("see_dPhi2"), tds.track_branch_obj>("see_dRz2Pos"), tds.track_branch_obj>("see_dPhi2Pos"), tds.track_branch_obj>("see_subDet1"), tds.track_branch_obj>("see_dRz1"), tds.track_branch_obj>("see_dPhi1"), tds.track_branch_obj>("see_dRz1Pos"), tds.track_branch_obj>("see_dPhi1Pos"), tds.track_branch_obj>("see_hoe1"), tds.track_branch_obj>("see_hoe2"), tds.track_branch_obj>("see_superClusterEnergy"), tds.track_branch_obj>("see_superClusterEta"), tds.track_branch_obj>("see_superClusterPhi"), tds.track_branch_obj>("see_superClusterEt"), tds.track_branch_obj>("see_superClusterIdx"), tds.track_branch_obj>("see_ecalDriven"), tds.track_branch_obj>("see_trkDriven")), "seeds"); } //#^#========================================================================= //=======================TRACK================================================ //============================================================================ struct Track{ unsigned int idx; float px; float py; float pz; float pt; float inner_px; float inner_py; float inner_pz; float inner_pt; float outer_px; float outer_py; float outer_pz; float outer_pt; float eta; float lambda; float cotTheta; float phi; float dxy; float dz; float ptErr; float etaErr; float lambdaErr; float phiErr; float dxyErr; float dzErr; float refpoint_x; float refpoint_y; float refpoint_z; float nChi2; int q; unsigned int nValid; unsigned int nInvalid; unsigned int nPixel; unsigned int nStrip; unsigned int nPixelLay; unsigned int nStripLay; unsigned int n3DLay; unsigned int nOuterLost; unsigned int nInnerLost; unsigned int algo; unsigned int originalAlgo; ULong64_t algoMask; unsigned int stopReason; short isHP; int seedIdx; float vtxx; float vtxy; float vtxz; vector shareFrac; vector simTrkIdx; vector hitIdx; vector hitType; int genIdx; float genDR; }; Value>* register_tracks(TrackingDataSet &tds){ auto builder = func(vector, // px; vector, // py; vector, // pz; vector, // pt; vector, // inner_px; vector, // inner_py; vector, // inner_pz; vector, // inner_pt; vector, // outer_px; vector, // outer_py; vector, // outer_pz; vector, // outer_pt; vector, // eta; vector, // lambda; vector, // cotTheta; vector, // phi; vector, // dxy; vector, // dz; vector, // ptErr; vector, // etaErr; vector, // lambdaErr; vector, // phiErr; vector, // dxyErr; vector, // dzErr; vector, // refpoint_x; vector, // refpoint_y; vector, // refpoint_z; vector, // nChi2; vector, // q; vector, // nValid; vector, // nInvalid; vector, // nPixel; vector, // nStrip; vector, // nPixelLay; vector, // nStripLay; vector, // n3DLay; vector, // nOuterLost; vector, // nInnerLost; vector, // algo; vector, // originalAlgo; vector, // algoMask; vector, // stopReason; vector, // isHP; vector, // seedIdx; vector, // vtxx; vector, // vtxy; vector, // vtxz; vector>, // shareFrac; vector>, // simTrkIdx; vector>, // hitIdx; vector>, // hitType; vector, // genIdx; vector // genDR; )>("build_tracks", FUNC(([](const vector& px, const vector& py, const vector& pz, const vector& pt, const vector& inner_px, const vector& inner_py, const vector& inner_pz, const vector& inner_pt, const vector& outer_px, const vector& outer_py, const vector& outer_pz, const vector& outer_pt, const vector& eta, const vector& lambda, const vector& cotTheta, const vector& phi, const vector& dxy, const vector& dz, const vector& ptErr, const vector& etaErr, const vector& lambdaErr, const vector& phiErr, const vector& dxyErr, const vector& dzErr, const vector& refpoint_x, const vector& refpoint_y, const vector& refpoint_z, const vector& nChi2, const vector& q, const vector& nValid, const vector& nInvalid, const vector& nPixel, const vector& nStrip, const vector& nPixelLay, const vector& nStripLay, const vector& n3DLay, const vector& nOuterLost, const vector& nInnerLost, const vector& algo, const vector& originalAlgo, const vector& algoMask, const vector& stopReason, const vector& isHP, const vector& seedIdx, const vector& vtxx, const vector& vtxy, const vector& vtxz, const vector>& shareFrac, const vector>& simTrkIdx, const vector>& hitIdx, const vector>& hitType, const vector& genIdx, const vector& genDR){ std::vector tracks; for(unsigned int i=0; i>("trk_px"), tds.track_branch_obj>("trk_py"), tds.track_branch_obj>("trk_pz"), tds.track_branch_obj>("trk_pt"), tds.track_branch_obj>("trk_inner_px"), tds.track_branch_obj>("trk_inner_py"), tds.track_branch_obj>("trk_inner_pz"), tds.track_branch_obj>("trk_inner_pt"), tds.track_branch_obj>("trk_outer_px"), tds.track_branch_obj>("trk_outer_py"), tds.track_branch_obj>("trk_outer_pz"), tds.track_branch_obj>("trk_outer_pt"), tds.track_branch_obj>("trk_eta"), tds.track_branch_obj>("trk_lambda"), tds.track_branch_obj>("trk_cotTheta"), tds.track_branch_obj>("trk_phi"), tds.track_branch_obj>("trk_dxy"), tds.track_branch_obj>("trk_dz"), tds.track_branch_obj>("trk_ptErr"), tds.track_branch_obj>("trk_etaErr"), tds.track_branch_obj>("trk_lambdaErr"), tds.track_branch_obj>("trk_phiErr"), tds.track_branch_obj>("trk_dxyErr"), tds.track_branch_obj>("trk_dzErr"), tds.track_branch_obj>("trk_refpoint_x"), tds.track_branch_obj>("trk_refpoint_y"), tds.track_branch_obj>("trk_refpoint_z"), tds.track_branch_obj>("trk_nChi2"), tds.track_branch_obj>("trk_q"), tds.track_branch_obj>("trk_nValid"), tds.track_branch_obj>("trk_nInvalid"), tds.track_branch_obj>("trk_nPixel"), tds.track_branch_obj>("trk_nStrip"), tds.track_branch_obj>("trk_nPixelLay"), tds.track_branch_obj>("trk_nStripLay"), tds.track_branch_obj>("trk_n3DLay"), tds.track_branch_obj>("trk_nOuterLost"), tds.track_branch_obj>("trk_nInnerLost"), tds.track_branch_obj>("trk_algo"), tds.track_branch_obj>("trk_originalAlgo"), tds.track_branch_obj>("trk_algoMask"), tds.track_branch_obj>("trk_stopReason"), tds.track_branch_obj>("trk_isHP"), tds.track_branch_obj>("trk_seedIdx"), tds.track_branch_obj>("trk_vtxx"), tds.track_branch_obj>("trk_vtxy"), tds.track_branch_obj>("trk_vtxz"), tds.track_branch_obj>>("trk_shareFrac"), tds.track_branch_obj>>("trk_simTrkIdx"), tds.track_branch_obj>>("trk_hitIdx"), tds.track_branch_obj>>("trk_hitType"), tds.track_branch_obj>("trk_genIdx"), tds.track_branch_obj>("trk_genDR")), "tracks"); } //#^#========================================================================= //===================SIM TRACK================================================ //============================================================================ struct SimTrack{ unsigned int idx; int event; int bunchCrossing; int pdgId; float px; float py; float pz; float pt; float eta; float phi; float pca_pt; float pca_eta; float pca_lambda; float pca_cotTheta; float pca_phi; float pca_dxy; float pca_dz; int q; unsigned int nValid; unsigned int nPixel; unsigned int nStrip; unsigned int nLay; unsigned int nPixelLay; unsigned int n3DLay; vector trkIdx; vector shareFrac; int parentVtxIdx; vector decayVtxIdx; vector simHitIdx; }; Value>* register_sim_tracks(TrackingDataSet &tds){ auto builder = func(vector, // event; vector, // bunchCrossing; vector, // pdgId; vector, // px; vector, // py; vector, // pz; vector, // pt; vector, // eta; vector, // phi; vector, // pca_pt; vector, // pca_eta; vector, // pca_lambda; vector, // pca_cotTheta; vector, // pca_phi; vector, // pca_dxy; vector, // pca_dz; vector, // q; vector, // nValid; vector, // nPixel; vector, // nStrip; vector, // nLay; vector, // nPixelLay; vector, // n3DLay; vector>, // trkIdx; vector>, // shareFrac; vector, // parentVtxIdx; vector>, // decayVtxIdx; vector> // simHitIdx; )>("build_sim_tracks", FUNC(([]( const vector& event, const vector& bunchCrossing, const vector& pdgId, const vector& px, const vector& py, const vector& pz, const vector& pt, const vector& eta, const vector& phi, const vector& pca_pt, const vector& pca_eta, const vector& pca_lambda, const vector& pca_cotTheta, const vector& pca_phi, const vector& pca_dxy, const vector& pca_dz, const vector& q, const vector& nValid, const vector& nPixel, const vector& nStrip, const vector& nLay, const vector& nPixelLay, const vector& n3DLay, const vector>& trkIdx, const vector>& shareFrac, const vector& parentVtxIdx, const vector>& decayVtxIdx, const vector>& simHitIdx){ std::vector sim_tracks; for(unsigned int i=0; i>("sim_event"), tds.track_branch_obj>("sim_bunchCrossing"), tds.track_branch_obj>("sim_pdgId"), tds.track_branch_obj>("sim_px"), tds.track_branch_obj>("sim_py"), tds.track_branch_obj>("sim_pz"), tds.track_branch_obj>("sim_pt"), tds.track_branch_obj>("sim_eta"), tds.track_branch_obj>("sim_phi"), tds.track_branch_obj>("sim_pca_pt"), tds.track_branch_obj>("sim_pca_eta"), tds.track_branch_obj>("sim_pca_lambda"), tds.track_branch_obj>("sim_pca_cotTheta"), tds.track_branch_obj>("sim_pca_phi"), tds.track_branch_obj>("sim_pca_dxy"), tds.track_branch_obj>("sim_pca_dz"), tds.track_branch_obj>("sim_q"), tds.track_branch_obj>("sim_nValid"), tds.track_branch_obj>("sim_nPixel"), tds.track_branch_obj>("sim_nStrip"), tds.track_branch_obj>("sim_nLay"), tds.track_branch_obj>("sim_nPixelLay"), tds.track_branch_obj>("sim_n3DLay"), tds.track_branch_obj>>("sim_trkIdx"), tds.track_branch_obj>>("sim_shareFrac"), tds.track_branch_obj>("sim_parentVtxIdx"), tds.track_branch_obj>>("sim_decayVtxIdx"), tds.track_branch_obj>>("sim_simHitIdx")), "sim_tracks"); } //#^#========================================================================= //==============SUPER CLUSTERS================================================ //============================================================================ struct SuperCluster { unsigned int idx; float e; float px; float py; float pz; float x; float y; float z; vector charge; vector lay1; vector lay2; vector ladder_blade1; vector ladder_blade2; vector subDet1; vector subDet2; vector dRz1; vector dPhi1; vector dRz2; vector dPhi2; vector seedType; vector seedHitIdx1; vector seedHitIdx2; }; Value>* register_super_clusters(TrackingDataSet &tds){ auto builder = func(vector, // e, vector, // px, vector, // py, vector, // pz, vector, // x, vector, // y, vector, // z, vector>, // charge; vector>, // lay1; vector>, // lay2; vector>, // ladder_blade1; vector>, // ladder_blade2; vector>, // subDet1; vector>, // subDet2; vector>, // dRz1; vector>, // dPhi1; vector>, // dRz2; vector>, // dPhi2; vector>, // seedType; vector>, // seedHitIdx1; vector> // seedHitIdx1; )>("build_super_clusters", FUNC(([](const vector& e, const vector& px, const vector& py, const vector& pz, const vector& x, const vector& y, const vector& z, const vector>& charge, const vector>& lay1, const vector>& lay2, const vector>& ladder_blade1, const vector>& ladder_blade2, const vector>& subDet1, const vector>& subDet2, const vector>& dRz1, const vector>& dPhi1, const vector>& dRz2, const vector>& dPhi2, const vector>& seedType, const vector>& seedHitIdx1, const vector>& seedHitIdx2){ std::vector super_clusters; for(unsigned int i=0; i>("scl_e"), tds.track_branch_obj>("scl_px"), tds.track_branch_obj>("scl_py"), tds.track_branch_obj>("scl_pz"), tds.track_branch_obj>("scl_x"), tds.track_branch_obj>("scl_y"), tds.track_branch_obj>("scl_z"), tds.track_branch_obj>>("scl_charge"), tds.track_branch_obj>>("scl_lay1"), tds.track_branch_obj>>("scl_lay2"), tds.track_branch_obj>>("scl_ladder_blade1"), tds.track_branch_obj>>("scl_ladder_blade2"), tds.track_branch_obj>>("scl_subDet1"), tds.track_branch_obj>>("scl_subDet2"), tds.track_branch_obj>>("scl_dRz1"), tds.track_branch_obj>>("scl_dPhi1"), tds.track_branch_obj>>("scl_dRz2"), tds.track_branch_obj>>("scl_dPhi2"), tds.track_branch_obj>>("scl_seedType"), tds.track_branch_obj>>("scl_seedHitIdx1"), tds.track_branch_obj>>("scl_seedHitIdx2") ), "super_clusters"); }