#ifndef WGRAD_HISTMODULE_HH #define WGRAD_HISTMODULE_HH #include "FrameMods/HepHistModule.hh" #include "Framework/APPModule.hh" class HepHist1D; // CLHEP random number classes : class HepRandomEngine; class RandGamma; class RandGauss; class WGRAD_HistModule : public HepHistModule { public: //----------------------------------------------- // Constructors //----------------------------------------------- WGRAD_HistModule( const char* const theName="WGRAD_HistModule", const char* const theDescription="WGRAD generator level histograms" ); //----------------------------------------------- // Destructor //----------------------------------------------- virtual ~WGRAD_HistModule(); // Operations virtual AppResult bookHistograms( void ); virtual AppResult fillHistograms( AbsEvent* anEvent ); virtual AppModule* clone( const char* cloneName ); const char* rcsId( ) const; private: // Fitted Z pT distribution : double zpt(double x); // Weighting routines from Mark Lancaster to get to W pT : float zypt(float pt, float y, int iflag); float zwpt(float pt, float y, int iflag); // Recoil model to get U from the W pT : bool passCuts(double Wpx, double Wpy, double Mpx, double Mpy); // Array with original Z pT distribution once : double _Z_pt_orig[1000]; // Reweighting array to go from Pythia W pT (default kT) -> "measured" W pT // from 0 to 20 GeV in 0.5 GeV bins. Calculated by dividing _W_pt_resum by _W_pt. double _pythia_weights_ktdefault[40]; // Histograms : HepHist1D* _W_pt; HepHist1D* _W_recoil; HepHist1D* _W_recoilReWeighted; HepHist1D* _W_tmass; HepHist1D* _Z_pt_fit; HepHist1D* _W_pt_resum; // CLHEP random number generating machinery : HepRandomEngine* _randomEngine; RandGamma* _gammaGenerator; RandGauss* _gaussGenerator; // Event properties after applying the recoil model : double _recoilModelRecoil; double _recoilModelT_Mass; double _recoilModelPtMiss; }; #endif