// $Id$ // // File: JEventProcessor_TrackStudies.h // Created: Thu Nov 5 13:15:00 EST 2015 // Creator: staylor (on Linux gluon110.jlab.org 2.6.32-358.23.2.el6.x86_64 x86_64) // #ifndef _JEventProcessor_TrackStudies_ #define _JEventProcessor_TrackStudies_ #include #include #include #include #include "CDC/DCDCWire.h" #include #include "HDGEOMETRY/DGeometry.h" #include #include #include #include #include #include #include #include #include #include class JEventProcessor_TrackStudies:public jana::JEventProcessor{ public: JEventProcessor_TrackStudies(); ~JEventProcessor_TrackStudies(); const char* className(void){return "JEventProcessor_TrackStudies";} private: jerror_t init(void); ///< Called once at program start. jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber); ///< Called everytime a new run number is detected. jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber); ///< Called every event. jerror_t erun(void); ///< Called everytime run number changes, provided brun has been called. jerror_t fini(void); ///< Called after last event of last event source has been processed. double CalcDoca(double q,const DVector3 &trackpos, const DVector3 &trackmom, const DVector3 &origin, const DVector3 &dir, DVector3 &pos1, DVector3 &pos2) const; void VertexOnlyFit(DKinFitter *dKinFitter,DKinFitUtils_GlueX *dKinFitUtils, const DTrackTimeBased *piminus_track, const DTrackTimeBased *piplus_track, const DTrackTimeBased *proton_track); void P4Fit(DKinFitter *dKinFitter,DKinFitUtils_GlueX *dKinFitUtils, const DTrackTimeBased *piminus_track, const DTrackTimeBased *piplus_track, const DTrackTimeBased *proton_track, const DBeamPhoton *beam,double weight); void P4VertexFit(DKinFitter *dKinFitter,DKinFitUtils_GlueX *dKinFitUtils, const DTrackTimeBased *piminus_track, const DTrackTimeBased *piplus_track, const DTrackTimeBased *proton_track, const DBeamPhoton *beam,double weight); void MCDataComparison(const DMCThrown *mcpim, const DMCThrown *mcpip, const DMCThrown *mcproton, const DTrackTimeBased *pim, const DTrackTimeBased *pip, const DTrackTimeBased *proton); TH1F *VertexConfidenceLevel,*VertexChiSq; TH2F *PiPlusPull[7],*PiMinusPull[7],*ProtonPull[7]; TH2F *PiPlusPullVsTheta[7],*PiMinusPullVsTheta[7],*ProtonPullVsTheta[7]; TH1F *P4ConfidenceLevel,*P4ChiSq; TH2F *P4PiPlusPull[7],*P4PiMinusPull[7],*P4ProtonPull[7]; TH2F *P4PiPlusPullVsTheta[7],*P4PiMinusPullVsTheta[7],*P4ProtonPullVsTheta[7]; TH1F *P4VertexConfidenceLevel,*P4VertexChiSq; TH2F *P4VertexPiPlusPull[7],*P4VertexPiMinusPull[7],*P4VertexProtonPull[7]; TH2F *P4VertexPiPlusPullVsTheta[7],*P4VertexPiMinusPullVsTheta[7],*P4VertexProtonPullVsTheta[7]; TH2F *P4VertexPiPlusPullECut[7],*P4VertexPiMinusPullECut[7],*P4VertexProtonPullECut[7]; TH2F *P4VertexPiPlusPullECutVsTheta[7],*P4VertexPiMinusPullECutVsTheta[7],*P4VertexProtonPullECutVsTheta[7]; TH2F *Pim_PullX_vs_phi,*Pim_PullY_vs_phi,*Pim_PullZ_vs_phi; TH2F *Pim_PullPx_vs_phi,*Pim_PullPy_vs_phi,*Pim_PullPz_vs_phi; TH2F *Pim_PullX_vs_theta,*Pim_PullY_vs_theta,*Pim_PullZ_vs_theta; TH2F *Pim_PullPx_vs_theta,*Pim_PullPy_vs_theta,*Pim_PullPz_vs_theta; double MC_DATA_MATCH_CUT; int DEBUG; int PLANE_TO_STUDY,RING_TO_SKIP; double CL_CUT,NUM_SIG_P,NUM_SIG_PHI,NUM_SIG_TANL; DMagneticFieldMap *bfield; DGeometry *dgeom; // Beam position and direction DVector2 beam_center, beam_dir; double beam_z0; int HYPOTHESIS_TO_STUDY; double PROTON_CL_CUT,PIP_CL_CUT,PIM_CL_CUT,KP_CL_CUT,KM_CL_CUT; double ANTIPROTON_CL_CUT,ELECTRON_CL_CUT,POSITRON_CL_CUT; double KINFIT_CL_CUT; vector >cdcwires; }; #endif // _JEventProcessor_TrackStudies_