00001 00005 /****************************************************************** 00006 * 00007 * $Id: StPmdDiscriminatorMaker.h,v 1.4 2004/10/30 00:08:06 subhasis Exp $ 00008 * 00009 * Author: Subhasis Chattopadhyay 00010 * 00011 ****************************************************************** 00012 * 00013 * Description: This routine describes methods for photon/hadron 00014 * discrimination. 00015 ****************************************************************** 00016 * 00017 * $Log: StPmdDiscriminatorMaker.h,v $ 00018 * Revision 1.4 2004/10/30 00:08:06 subhasis 00019 * TranFlag added and set to 0 in ctor 00020 * 00021 * Revision 1.3 2003/09/10 19:47:27 perev 00022 * ansi corrs 00023 * 00024 * Revision 1.2 2003/05/29 13:12:51 subhasis 00025 * several changes to include NN 00026 * 00027 ******************************************************************/ 00028 00029 #ifndef STAR_StPmdDiscriminatorMaker 00030 #define STAR_StPmdDiscriminatorMaker 00031 #ifndef StMaker_H 00032 #include "StMaker.h" 00033 #endif 00034 00035 //For CC5 compatibility 00036 #include <vector> 00037 #if !defined(ST_NO_NAMESPACES) 00038 using std::vector; 00039 #endif 00040 00041 #ifdef ST_NO_TEMPLATE_DEF_ARGS 00042 // Syntax currently required by Solaris compiler 00043 #define StVector(T) vector<T, allocator<T> > 00044 #else 00045 #define StVector(T) vector<T> 00046 #endif 00047 // ************************* 00048 #include <TH2.h> 00049 #include <TH1.h> 00050 #include <TCanvas.h> 00051 00052 class StPmdCollection; 00053 class StPhmdCollection; 00054 class StPmdDetector; 00055 class StPmdCluster; 00056 class StPhmdClusterCollection; 00057 class StPhmdCluster; 00058 class StNNCluster; 00059 00060 //typedef StVector(StPhmdCluster*) StPmdCl; 00061 typedef StVector(StNNCluster*) StPmdCl; 00062 00063 class StPmdDiscriminatorMaker: public StMaker{ 00064 00065 private: 00066 Int_t m_photonlike; 00067 Float_t mEdepThreshold; 00068 Float_t mDeltaEta; 00069 Float_t mDeltaPhi; 00070 Int_t mApplyFlagNN; 00071 Int_t mTrainFlag; 00072 protected: 00073 TH1F *mEdepPmd; 00074 TH1F *mEtaPmd; 00075 TH1F *mPhiPmd; 00076 TH1F *mEtadiff; 00077 TH1F *mPhidiff; 00078 TH1F *mMCPID; 00079 TH2F *mEtaPhi; 00080 TH1F *mClusterPID; 00081 TH1F *mClusterEdepPID; 00082 TH2F *mEdepVsPID; 00083 TH1F *mcpvmatched; 00084 00085 public: 00086 StPmdDiscriminatorMaker(const char *name="StPmdDiscriminator"); 00087 ~StPmdDiscriminatorMaker(); 00088 00089 virtual Int_t Init(); 00090 virtual Int_t Make(); 00091 virtual Int_t Finish(); 00092 void getEdepThreshold(Float_t); 00093 void SetDeltaEta(Float_t); 00094 void SetDeltaPhi(Float_t); 00095 void SetApplyFlag(Int_t); 00096 void SetTrainFlag(Int_t); 00097 void bookHistograms(); 00098 void fillHistograms(StPmdDetector*, StPmdDetector*); 00099 void Matching(StPmdDetector*, StPmdDetector*); 00100 Int_t PrepareInputforNN(StPmdDetector*,StPmdDetector*,StPhmdClusterCollection*,StPhmdClusterCollection*); 00101 //void Matching(); 00102 void fillStEvent(StPmdCollection*,StPhmdCollection*); 00103 void Browse(TBrowser* b); 00104 //NN hist outs (made public to be accessed from StPmdNeunet 00105 TH1F *mNNoutput; 00106 00107 ClassDef(StPmdDiscriminatorMaker,0) 00108 }; 00109 00110 inline void StPmdDiscriminatorMaker::getEdepThreshold(Float_t de){mEdepThreshold=de;} 00111 inline void StPmdDiscriminatorMaker::SetDeltaEta(Float_t deta){mDeltaEta=deta;} 00112 inline void StPmdDiscriminatorMaker::SetDeltaPhi(Float_t dphi){mDeltaPhi=dphi;} 00113 inline void StPmdDiscriminatorMaker::SetApplyFlag(Int_t flag){mApplyFlagNN=flag;} 00114 inline void StPmdDiscriminatorMaker::SetTrainFlag(Int_t flag){mTrainFlag=flag;} 00115 #endif 00116 00117 00118 00119 00120 00121 00122 00123 00124 00125 00126 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138
1.5.9