#if !defined (__CINT__) || defined (__MAKECINT__) //#include //#include #include "TTree.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Stntuple/photon/TPhotonUtil.hh" #include "Stntuple/alg/TStntuple.hh" using namespace std; #endif struct branch_event { int run; int eve; int npho; int nele; int nmu; int njet; // // jet information float j_et[10]; // uncorrected Et float j_eta[10]; float j_px[10]; float j_py[10]; float j_pz[10]; float j_phi[10]; // // // photon information float g_phi[5]; float g_etc[5]; float g_ec[5]; float g_ces2[5]; float g_eta[5]; float g_hadem[5]; float g_chi2[5]; float g_xces[5]; float g_zces[5]; float g_lshr[5]; float g_iso4[5]; int g_n3d[5]; float g_sumpt4[5]; float g_px[5]; float g_py[5]; float g_pz[5]; float g_e[5]; // electron info float e_et[5]; // uncorrected Et // muon info float m_pt[5]; // uncorrected Pt }; static const TString branch_format_event= "run/I:" "eve/I:" "npho/I:" "nele/I:" "nmu/I:" "njet/I:" "j_et[10]/F:" "j_eta[10]/F:" "j_px[10]/F:" "j_py[10]/F:" "j_pz[10]/F:" "j_phi[10]/F:" "g_phi[5]/F:" "g_etc[5]/F:" "g_ec[5]/F:" "g_ces2[5]/F:" "g_eta[5]/F:" "g_hadem[5]/F:" "g_chi2[5]/F:" "g_xces[5]/F:" "g_zces[5]/F:" "g_lshr[5]/F:" "g_iso4[5]/F:" "g_n3d[5]/F:" "g_sumpt4[5]/F:" "g_px[5]/F:" "g_py[5]/F:" "g_pz[5]/F:" "g_e[5]/F:" "e_et[5]/F:" "m_pt[5]/F" ; //! Brief description of TFlatNtupleModule /*! class TFlatNtupleModule: module to create ntuples to search for diphoton + e/mu */ class TFlatNtupleModule: public TStnModule { public: private: TTree* spruce; branch_event fEveS; TFile* _file; protected: // pointers to the data blocks used, // header block is always available via // TStnModule::GetHeaderBlock() TStnHeaderBlock* fHeaderBlock; TCalDataBlock* fCalDataBlock; TCesDataBlock* fCesDataBlock; TCprDataBlock* fCprDataBlock; TStnJetBlock* fJetBlock; TStnTrackBlock* fTrackBlock; TStnClusterBlock* fClusterBlock; TStnPhotonBlock* fPhotonBlock; TStnElectronBlock* fElectronBlock; TPhoenixElectronBlock* fPhElectronBlock; TStnTrackBlock* fPhSiTrackBlock; TStnMuonBlock* fMuonBlock; TStnTriggerBlock* fTriggerBlock; TStnTriggerBlock* fTrigSimBlock; TDcasDataBlock* fDcasDataBlock; TStnVertexBlock* fVertexBlock; TStnVertexBlock* fZVertexBlock; // histograms filled public: TFlatNtupleModule(const char* name="Example", const char* title="Example"); ~TFlatNtupleModule(); // ****** accessors TStnHeaderBlock* GetHeaderBlock() { return fHeaderBlock; } TCalDataBlock* GetCalDataBlock() { return fCalDataBlock; } TCesDataBlock* GetCesDataBlock() { return fCesDataBlock; } TCprDataBlock* GetCprDataBlock() { return fCprDataBlock; } TStnJetBlock* GetJetBlock() { return fJetBlock; } TStnTrackBlock* GetTrackBlock() { return fTrackBlock; } TStnClusterBlock* GetClusterBlock() { return fClusterBlock; } TStnPhotonBlock* GetPhotonBlock() { return fPhotonBlock; } TStnElectronBlock* GetElectronBlock(){ return fElectronBlock; } TStnMuonBlock* GetMuonBlock() { return fMuonBlock; } TStnTriggerBlock* GetTriggerBlock() { return fTriggerBlock; } TStnTriggerBlock* GetTrigSimBlock() { return fTrigSimBlock; } TStnVertexBlock* GetVertexBlock() { return fVertexBlock; } TStnVertexBlock* GetZVertexBlock() { return fZVertexBlock; } // ****** overloaded methods of // TStnModule int BeginJob(); int BeginRun(); int Event (int ientry); int EndJob (); // ****** other methods void BookHistograms(); void SaveHistograms(); void InitNtuple(); int LepPlots(int ientry); void SetFileName(char* filen){_fileName = filen;} private: int nevent,nskim; int npass[100]; int run,evt,sec; TStnEvent* event; TString _fileName; bool qMc; ClassDef(TFlatNtupleModule,1) };