Main Page | Class List | File List | Class Members | Related Pages

EEmcTTMMaker.h

00001 // Hey Emacs this is -*-c++-*-
00002 // $Id: EEmcTTMMaker.h,v 1.18 2004/06/03 21:02:29 zolnie Exp $
00003 #ifndef STAR_EEmcTTMMaker
00004 #define STAR_EEmcTTMMaker
00005 
00006 #ifndef StMaker_H
00007 #include "StMaker.h"
00008 #endif
00009 
00010 #include <ostream>
00011 #include <map>
00012 
00013 #include "TString.h"
00014 
00015 #if !defined(ST_NO_NAMESPACES)
00016 using std::map;
00017 using std::ostream;
00018 #endif
00019 
00020 class TH1F;
00021 class TTree;
00022 class TFile;
00023 class TString;
00024 class TList;
00025 
00026 class StChain;
00027 class StMuTrack;
00028 class EEmcGeomSimple;
00029 
00030 class StEventInfo; 
00031 class StEventSummary; 
00032 class StMuTriggerIdCollection; 
00033 
00034 class StMuDstMaker;
00035 class StEEmcDbMaker;
00036 
00037 class EEmcTower;
00038 
00039 // class EEmcTTMMaker
00040 class EEmcTTMMaker : public StMaker {
00041 public: 
00043   static const Int_t    kDefMaxCTBsum      ;
00045   static const Int_t    kDefMinTrackHits   ;  
00047   static const Double_t kDefMinTrackLength ;  
00049   static const Double_t kDefMinTrackPt     ;  
00051   static const Double_t kDefMinTrackEta    ;  
00053   static const Double_t kDefMaxTrackEta    ;  
00055   static const Double_t kDefDeltaPhiCut    ;
00057   static const Double_t kDefDeltaEtaCut    ;
00058   
00063   EEmcTTMMaker(const char          *self    = "ttmmk", 
00064                class StMuDstMaker  *mumaker =  NULL,
00065                class StEEmcDbMaker *dbmaker =  NULL);
00066 
00068   virtual       ~EEmcTTMMaker();
00069 
00071   virtual Int_t  Init();   
00073   virtual Int_t  Make();   
00076   virtual void   Clear(Option_t *option = ""); 
00078   virtual Int_t  Finish(); 
00079   
00081   void     ResetZPositionsArray()                              { mZ.clear(); }
00085   void     AddZPosition(const TString name, const double zpos) { mZ[zpos]=name; }
00086 
00087 
00089   Int_t    GetMaxCTBSum     ()     const  { return mMaxCTBsum   ; }
00091   void     SetMaxCTBSum     (Int_t    v) { mMaxCTBsum=v     ; }
00092 
00093 
00095   Int_t    GetMinTrackHits  () const  { return mMinTrackHits; }
00097   void     SetMinTrackHits  (Int_t    v) { mMinTrackHits=v  ; }
00098 
00099 
00101   Double_t GetMinTrackLength() const  { return mMinTrackLength ; }
00103   void     SetMinTrackLength(Double_t v) { mMinTrackLength=v   ; }
00104 
00106   Double_t GetMinTrackPt    () const  { return mMinTrackPt    ; }
00108   void     SetMinTrackPt    (Double_t v) { mMinTrackPt=v      ; }
00109 
00111   Double_t GetMinTrackEta   () const  { return mMinTrackEta   ; }
00113   void     SetMinTrackEta   (Double_t v) { mMinTrackEta=v     ; }
00114 
00116   Double_t GetMaxTrackEta   () const  { return mMaxTrackEta   ; }
00118   void     SetMaxTrackEta   (Double_t v) { mMaxTrackEta=v     ; }
00119 
00120   
00122   Double_t GetDeltaPhiCut() const { return mPhiFac; }
00124   void     SetDeltaPhiCut(Double_t v=1.0) { mPhiFac=v;  }
00125 
00127   Double_t GetDeltaEtaCut() const { return mEtaFac; }
00129   void     SetDeltaEtaCut(Double_t v=1.0) { mEtaFac=v;  }
00130 
00132   void     SetFileName( const char *string) { mFileName=TString(string); mTreeOut=true; }
00134   void     WriteTree( const bool f ) { mTreeOut = f ; }
00135 
00137   ULong_t  GetNMatched() const { return mNMatched; };
00138 
00140   TList *GetTracks() { return mTrackList; };
00142   TList *GetTowers() { return mTowerList; };
00143 
00145   TList *GetMatchList()  { return mMatchList ; }; 
00146 
00147 
00149   ostream&   Summary    ( ostream &out ) const ;
00150 
00151 protected:
00153   void     ResetStats() { mNMatched=mNEvents=0L; };  
00155   Bool_t   AcceptTrack( const StMuTrack *track);
00157   Bool_t   MatchTrack ( const double dphi,   const double deta,  const double phihw,  const double etahw); 
00158 
00159 
00160 private:
00161   Int_t    mMaxCTBsum            ;  
00162   Int_t    mMinTrackHits         ;  
00163   Double_t mMinTrackLength       ;  
00164   Double_t mMinTrackPt           ;  
00165   Double_t mMinTrackEta          ;  
00166   Double_t mMaxTrackEta          ;  
00168   Double_t mPhiFac;                 
00169   Double_t mEtaFac;                 
00172   // control histograms for tracks
00174   TH1F  *hTrackNHits; 
00175   TH1F  *hTrackLen;   
00176   TH1F  *hTrackPt ;   
00177   TH1F  *hTrackPtot;  
00179   TH1F  *hTrackDCA[3];
00180   TH1F  *hVertex[3]  ;
00182   StMuDstMaker   *mMuDstMaker; // toplevel muDST maker
00183   StEEmcDbMaker  *mEEmcDb;     // EEMC database maker
00184   //
00185   EEmcGeomSimple& mGeom;       // tower geometry
00186 
00187   TString         mFileName;   // output file name
00188   TFile          *mFile;       // output file
00189   TTree          *mTree;       // output tree
00190 
00191   map<double,TString> mZ;      // a map that hold z positions 
00192 
00193   // stats
00194   ULong_t         mNMatched;   // number of matched tracks
00195   ULong_t         mNEvents;    // total number of events 
00196 
00197   //
00198   TList          *mTrackList;
00199   TList          *mTowerList;
00200   TList          *mMatchList;
00201   //
00202   StEventInfo             *mEvInfo;
00203   StEventSummary          *mEvSumm;
00204   StMuTriggerIdCollection *mEvTrig;
00205 
00206   bool            mTreeOut;
00207 
00208  public:
00209   //  StMaker jumbo mumbo
00211   virtual const char *GetCVS() const {
00212     static const char cvs[]=
00213       "Tag $Name:  $ $Id: EEmcTTMMaker.h,v 1.18 2004/06/03 21:02:29 zolnie Exp $ built "__DATE__" "__TIME__ ; 
00214     return cvs;
00215   }
00216   
00217   ClassDef(EEmcTTMMaker, 1)   // 
00218 };
00219 
00221 ostream&  operator<<(ostream &out, const EEmcTTMMaker &ttm); 
00222 #endif
00223 
00224 // $Log: EEmcTTMMaker.h,v $
00225 // Revision 1.18  2004/06/03 21:02:29  zolnie
00226 // fixed subtle bug: when e.g. dphi = +180.(tower center) - -180.0(track)
00227 //  the match would be rejected - in practice it never happen
00228 //
00229 // Revision 1.17  2004/05/10 23:02:53  zolnie
00230 // EEmcTTMMaker produces now  nanoDST
00231 //
00232 // Revision 1.16  2004/05/07 22:02:56  zolnie
00233 // fixed a nasty memory leak in EEmcTTMMaker
00234 //
00235 // Revision 1.15  2004/05/06 16:02:49  zolnie
00236 // more docs
00237 //
00238 // Revision 1.14  2004/05/05 23:00:57  zolnie
00239 // more docs
00240 //
00241 // Revision 1.13  2004/05/05 22:04:16  zolnie
00242 // forgor about EEmcTower
00243 //
00244 // Revision 1.12  2004/05/05 21:37:37  zolnie
00245 // ver 2.0 released
00246 //
00247 // Revision 1.11  2004/05/04 18:28:56  zolnie
00248 // version after split
00249 //
00250 // Revision 1.10  2004/04/14 16:40:34  zolnie
00251 // *** empty log message ***
00252 //
00253 // Revision 1.9  2004/04/14 16:20:25  zolnie
00254 // added static method Run for faster analysis under root4star
00255 //
00256 // Revision 1.8  2004/04/13 17:26:09  zolnie
00257 // more adaptation needed
00258 //
00259 // Revision 1.7  2004/01/26 21:51:54  zolnie
00260 // shorter names
00261 //
00262 // Revision 1.6  2004/01/26 21:08:32  zolnie
00263 // working track/tower display (before big farewell cleanup)
00264 //
00265 // Revision 1.5  2004/01/19 22:07:51  zolnie
00266 // toward track/tower display
00267 //
00268 // Revision 1.4  2004/01/14 22:59:02  zolnie
00269 // use doxygen for documentation
00270 //
00271 // Revision 1.3  2004/01/06 22:42:56  zolnie
00272 // provide summary/statistics info
00273 //
00274 // Revision 1.2  2004/01/06 21:33:51  zolnie
00275 // release
00276 //
00277 // Revision 1.1  2004/01/06 17:45:11  zolnie
00278 // close to release
00279 //

Generated on Thu Jun 3 17:02:37 2004 for Tower to Track Match Maker by doxygen 1.3.5