StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFttCluster.h
1 #ifndef STFTTCLUSTER_H
2 #define STFTTCLUSTER_H
3 
4 #include "StObject.h"
5 #include <Stiostream.h>
6 #include "StContainers.h" // For StPtrVecFttRawHit
7 #include "StEnumerations.h"
8 
9 class StFttRawHit;
10 class StFttPoint;
11 class StFttDb;
12 
13 class StFttCluster : public StObject {
14 public:
15  StFttCluster();
16  ~StFttCluster();
17 
18  int id() const; // Cluster ID
19  UChar_t plane() const; // Detector plane.
20  UChar_t quadrant() const; // detector quadrant.
21  UChar_t row() const; // detector row.
22  UChar_t orientation() const;
23  int nStrips() const;
24  int nPoints() const;
25  int nRawHits() const; // == nStrips?? need both?
26  int nNeighbors() const;
27  float sumAdc() const;
28  float x() const; // Mean x ("center of gravity") in local grid coordinate (1st moment).
29  float sigma() const; // Maximum 2nd moment (along major axis).
30 
31  void setId(int cluid);
32  void setPlane(UChar_t plane);
33  void setQuadrant(UChar_t quad);
34  void setRow(UChar_t row);
35  void setOrientation( UChar_t );
36  void setNStrips(int numStrips);
37  void setSumAdc(int theSumAdc);
38  void setX(float x0);
39  void setSigma(float sigma);
40 
41  StPtrVecFttRawHit& rawHits();
42  const StPtrVecFttRawHit& rawHits() const;
43  void addRawHit(StFttRawHit* p);
44  void addNeighbor(StFttCluster* neighbor);
45  StPtrVecFttCluster& neighbor();
46  const StPtrVecFttCluster& neighbor() const;
47  StPtrVecFttPoint& points();
48  const StPtrVecFttPoint& points() const;
49  void addPoint(StFttPoint* p);
50  // void print(Option_t *option="") const;
51 
52 private:
53  Int_t mId=-1; // Eventwise cluster ID
54  UChar_t mPlane;
55  UChar_t mQuadrant;
56  UChar_t mRow;
57  UChar_t mOrientation = kFttUnknownOrientation; // Orientation of cluster
58  Int_t mNStrips=0; // Number of strips
59  Float_t mSumAdc=0.0; // Total ADC (0th moment)
60  Float_t mX=0.0; // Mean x ("center of gravity") in local grid coordinate (1st moment)
61  Float_t mSigma=0.0; // 2nd moment
62  StPtrVecFttRawHit mRawHits; // Tower hits of the current cluster
63  StPtrVecFttCluster mNeighbors; // Neighbor clusters
64  StPtrVecFttPoint mPoints; // Fitted points (photons) in the cluster
65 
66  ClassDef(StFttCluster, 2)
67 };
68 
69 std::ostream& operator << ( std::ostream&, const StFttCluster& clu ); // Printing operator
70 
71 
72 inline int StFttCluster::id() const { return mId; } // Cluster ID
73 inline UChar_t StFttCluster::plane() const { return mPlane; }
74 inline UChar_t StFttCluster::quadrant() const { return mQuadrant; }
75 inline UChar_t StFttCluster::row() const { return mRow; }
76 inline UChar_t StFttCluster::orientation() const { return mOrientation; }
77 inline int StFttCluster::nStrips() const { return mNStrips; }
78 inline int StFttCluster::nRawHits() const { return mRawHits.size(); }
79 inline int StFttCluster::nNeighbors() const { return mNeighbors.size(); }
80 inline int StFttCluster::nPoints() const { return mPoints.size(); }
81 inline float StFttCluster::sumAdc() const { return mSumAdc; }
82 inline float StFttCluster::x() const { return mX; } // Mean x ("center of gravity") in local grid coordinate (1st moment).
83 inline float StFttCluster::sigma() const { return mSigma; } // 2nd moment
84 
85 inline void StFttCluster::setPlane(UChar_t plane) { mPlane = plane; }
86 inline void StFttCluster::setQuadrant(UChar_t quadrant) { mQuadrant = quadrant; }
87 inline void StFttCluster::setRow(UChar_t row) { mRow = row; }
88 inline void StFttCluster::setOrientation( UChar_t so ) { mOrientation = so; }
89 inline void StFttCluster::setNStrips(int numStrips) { mNStrips = numStrips; }
90 inline void StFttCluster::setSumAdc(int theSumAdc) { mSumAdc = theSumAdc; }
91 inline void StFttCluster::setX(float x0) { mX = x0; }
92 inline void StFttCluster::setSigma(float sigma) { mSigma = sigma; }
93 
94 inline void StFttCluster::setId(int cluid) { mId = cluid; }
95 
96 inline StPtrVecFttRawHit& StFttCluster::rawHits() { return mRawHits; }
97 inline const StPtrVecFttRawHit& StFttCluster::rawHits() const { return mRawHits; }
98 inline StPtrVecFttCluster& StFttCluster::neighbor() { return mNeighbors; }
99 inline const StPtrVecFttCluster& StFttCluster::neighbor() const { return mNeighbors; }
100 inline StPtrVecFttPoint& StFttCluster::points() { return mPoints; }
101 inline const StPtrVecFttPoint& StFttCluster::points() const { return mPoints; }
102 
103 #endif // STFTTCLUSTER_H