// -*- C++ -*- // // Pibero Djawotho // Indiana University // Feb 10, 2008 // #ifndef ST_ETA_FINDER_H #define ST_ETA_FINDER_H class TChain; class TFile; class TNtuple; class TClonesArray; class TCanvas; class TH1; class StGammaEvent; class StGammaTower; class StGammaStrip; class StGammaTrack; class StGammaCandidate; class StEndcapEmcCluster; class StEndcapSmdCluster; struct StGammaPoint { StGammaCandidate* candidate; StEndcapSmdCluster* smdu; StEndcapSmdCluster* smdv; float energy; TVector3 position; TVector3 momentum(const TVector3& vertex) const { TVector3 mom = position - vertex; mom.SetMag(energy); return mom; } }; struct StTowerPoint { float energy; TVector3 position; int sector; int u_strip; int v_strip; TVector3 momentum(const TVector3& vertex) const { TVector3 mom = position - vertex; mom.SetMag(energy); return mom; } }; #include #include "TObject.h" class StEtaFinder : public TObject { public: StEtaFinder() {} ~StEtaFinder() {} void clear(); void init(const char* filelist, const char* ofile); void finish(); void eventLoop(); private: bool acceptEvent() const; void processEvent(); void getTowers(); void getPreshower1(); void getPreshower2(); void getPostshower(); void getStrips(); void getTracks(); void findClusters(); void matchClusters(); float conePt(StGammaTower* tower, float radius) const; void findEmcClusters(); StGammaTower* getNextTower(StGammaTower* tower, int deta, int dphi) const; void makePoints(); int numberOfTracks(StEndcapEmcCluster* cluster) const; TVector3 getIntersection(StEndcapSmdCluster* cluster1, StEndcapSmdCluster* cluster2) const; StGammaTower* getTower(const TVector3& position) const; float isolation(StGammaTower* tower) const; bool electron(StEndcapEmcPoint* point) const; int getCandidates(); void matchCandidates(); void findTowerPoints(); void print(const StTowerPoint& point); TChain* mChain; TFile* mFile; TNtuple* mTuple; StGammaEvent* mEvent; StGammaTower* mTowers[12][60]; // [etabin][phibin] StGammaTower* mPreshower1[12][60]; // [etabin][phibin] StGammaTower* mPreshower2[12][60]; // [etabin][phibin] StGammaTower* mPostshower[12][60]; // [etabin][phibin] StGammaStrip* mStrips[12][2][288]; // [sector][plane][strip] TClonesArray* mClusters[12][2]; // [sector][plane] multimap mTracks; TClonesArray* mEmcClusters; vector< pair > mMatchedClusters; TClonesArray* mPoints; TCanvas* mCanvas; TString mPsFile; vector mCandidates; vector mGammaPoints; vector mTowerPoints; TH1* mPointCounter; ClassDef(StEtaFinder, 1); }; #endif // ST_ETA_FINDER_H