// $Id$ // // File: JEventProcessor_InsertStudies.h // Created: Mon Dec 9 14:08:13 EST 2019 // Creator: staylor (on Linux gluon117.jlab.org 3.10.0-957.21.3.el7.x86_64 x86_64) // #ifndef _JEventProcessor_InsertStudies_ #define _JEventProcessor_InsertStudies_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class JEventProcessor_InsertStudies:public jana::JEventProcessor{ public: JEventProcessor_InsertStudies(); ~JEventProcessor_InsertStudies(); const char* className(void){return "JEventProcessor_InsertStudies";} 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. jerror_t FillParticleVectors(vector&tracks, map >&particles ) const; unsigned int FillGammaVector(double t0_rf, vector&neutrals, vector&gammaHyps) const; void DoKinematicFitMissingProton(const DBeamPhoton *beamphoton, map >&particles, vector&gammaHyps, DKinFitUtils_GlueX *dKinFitUtils, DKinFitter *dKinFitter) const; void DoKinematicFit(const DBeamPhoton *beamphoton, map >&particles, vector&gammaHyps, DKinFitUtils_GlueX *dKinFitUtils, DKinFitter *dKinFitter) const; static bool SortParticleProbability(const paira, const pairb){ return a.first>b.first; } void TwoGammaAnalysis(unsigned int insert_count,DKinFitter *dKinFitter, double weight,bool missing_proton) const; void FourGammaAnalysis(unsigned int insert_count,DKinFitter *dKinFitter, double weight,bool missing_proton=false) const; void SixGammaAnalysis(DKinFitter *dKinFitter,double weight) const; void MakeTriplets(vector > >&triplets) const; void MakeDoublets(vector > >&doublets) const; void FillThrownHistos(const DMCReaction *reaction, vector&throwns, vector&tagm_geom, vector&tagh_geom) const; double MIN_BEAM_E,MAX_BEAM_E; double FCAL_THRESHOLD,BCAL_THRESHOLD; double PROTON_GAMMA_DT_CUT; double CHISQ_CUT; bool VETO_BCAL; TH1F *MCBeam,*MCMissingMass,*TwoPi0NoOverlap; TH1F *ProtonGammaTimeDiff,*BeamProtonTimeDiff; TH2F *FourGammaChiSq,*SixGammaChiSq; TH1F *EtaPi0NoOverlap,*TwoEtaNoOverlap; TH2F *Pi02gNoVeto,*Pi02gWithVeto,*FourGamma2DNoOverlap; TH2F *Measured4GammaMass,*FourGammaMass,*FourGamma2D,*TwoGammaOffPi0; TH2F *Pi02gNoVetoNoOverlap,*Pi02gWithVetoNoOverlap,*TwoGammaOffPi0NoOverlap; TH2F *Pi02gVsPi0gNoOverlap,*Pi02gVsPi0gWithVetoNoOverlap; TH2F *TwoEtaPi0Dalitz; TH1F *TwoEtaPi0Mass,*TwoEtaPi0MassNoOverlap; TH1F *Measured6GammaMass,*SixGammaMass,*ThreePi0Mass,*Eta2Pi0Mass; TH2F *FourGamma2D_6g,*Pi0gVsPi0g,*Pi02gVsPi0g,*Pi02gVsPi0gWithVeto; TH2F *FourGamma2D_6g_NoOverlap; TH2F *Pi0gVsPi0gNoOverlap; TH1F *ThreePi0MassNoOverlap,*Eta2Pi0MassNoOverlap; TH1F *BeamTimeDiff,*FourGammaMissingProton,*Measured4GammaMissingProton; TH1F *FourGammaChiSqMissingProton,*MissingMass; TH2F *FourGamma2DMissingProton; TH1F *TwoGammaMissingProton,*Measured2GammaMissingProton; TH1F *TwoGammaChiSqMissingProton,*MissingMass2g; }; #endif // _JEventProcessor_InsertStudies_