StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFgtSingleEventDisplay.h
1 /***************************************************************************
2  *
3  * $Id: StFgtSingleEventDisplay.h,v 1.1 2012/09/21 18:56:52 pnord Exp $
4  * Author: S. Gliske, Jan 2012
5  *
6  ***************************************************************************
7  *
8  * Description: Make plots of single events.
9  *
10  ***************************************************************************
11  *
12  * $Log: StFgtSingleEventDisplay.h,v $
13  * Revision 1.1 2012/09/21 18:56:52 pnord
14  * *** empty log message ***
15  *
16  * Revision 1.1 2012/01/31 09:26:17 sgliske
17  * StFgtQaMakers moved to StFgtPool
18  *
19  * Revision 1.2 2012/01/24 05:45:31 sgliske
20  * debugged--mostly :)
21  *
22  * Revision 1.1 2012/01/24 03:32:17 sgliske
23  * creation
24  *
25  *
26  **************************************************************************/
27 
28 #ifndef _ST_FGT_SINGLE_EVENT_DISPLAY_H_
29 #define _ST_FGT_SINGLE_EVENT_DISPLAY_H_
30 
31 #include <string>
32 #include <sstream>
33 
34 #include "StMaker.h"
35 #include "StuDraw3DEvent.h"
36 #include "StFgtDbMaker/StFgtDbMaker.h"
37 #include "StFgtDbMaker/StFgtDb.h"
38 
39 class StFgtCollection;
40 class TH2F;
41 
42 struct FgtStripDbItem{
43  int electId,geoId, rdo,arm,apv,chan;
44  Short_t disc,strip;
45  Char_t stat; // 0 is good
46  float r1, r2, phi1, phi2; // cm, rad
47  float phi1Deg, phi2Deg; // cm, rad
48  float x1, y1, x2, y2, Z;
49  float ped, sigPed;
50  Char_t layer; // P,R
51  Short_t quad; // A-D
52  char name[10];
53  int hit; // Flag used to indicate strip is above some threshold
54  short adc[kFgtNumTimeBins];
55 };
56 
57 enum {mxFgtElect=30720, mxFgtApv=22, mxFgtPln=2, kFgtPlnP=0, kFgtPlnR=1 };
58 
59 
61  public:
62  // constructors
63  StFgtSingleEventDisplay( const Char_t* name = "FgtSingleEvent", const Char_t* fname = "fgtMapDump.csv" );
64 
65  // default OK
66  // StFgtSingleEventDisplay(const StFgtSingleEventDisplay&);
67 
68  // equals operator -- default OK
69  // StFgtSingleEventDisplay& operator=(const StFgtSingleEventDisplay&);
70 
71  void readFgtStripDb();
72 
73  Int_t getNumFgtElect() { return numFgtElect; }
74 
75  FgtStripDbItem * getDbItem(Int_t num) {
76  if ( itemNumInRange(num)) {
77  return &(stripDb[num]);
78  } else {
79  return NULL;
80  }
81  }
82 
83  void drawStrip(Int_t geoId, Color_t lineColor =0);
84 
85  Int_t getElectId(Int_t num) {
86  if ( itemNumInRange(num)) {
87  return (stripDb[num].electId);
88  } else {
89  return NULL;
90  }
91  }
92 
93  Int_t getGeoId(Int_t num) {
94  if ( itemNumInRange(num)) {
95  return (stripDb[num].geoId);
96  } else {
97  return NULL;
98  }
99  }
100 
101  Int_t getLayer(Int_t num) {
102  if ( itemNumInRange(num)) {
103  return (stripDb[num].layer);
104  } else {
105  return NULL;
106  }
107  }
108 
109  Double_t getR1(Int_t num) {
110  if ( itemNumInRange(num)) {
111  return (stripDb[num].r1);
112  } else {
113  return NULL;
114  }
115  }
116 
117  Double_t getR2(Int_t num) {
118  if ( itemNumInRange(num)) {
119  return (stripDb[num].r2);
120  } else {
121  return NULL;
122  }
123  }
124 
125  Double_t getPhi1(Int_t num) {
126  if ( itemNumInRange(num)) {
127  return (stripDb[num].phi1);
128  } else {
129  return NULL;
130  }
131  }
132 
133  Double_t getPhi2(Int_t num) {
134  if ( itemNumInRange(num)) {
135  return (stripDb[num].phi2);
136  } else {
137  return NULL;
138  }
139  }
140 
141  Int_t getHit(Int_t num) {
142  if ( itemNumInRange(num)) {
143  return (stripDb[num].hit);
144  } else {
145  return NULL;
146  }
147  }
148 
149  Int_t getDisc(Int_t num) {
150  if ( itemNumInRange(num)) {
151  return (stripDb[num].disc);
152  } else {
153  return NULL;
154  }
155  }
156 
157  Int_t getStat(Int_t num) {
158  if ( itemNumInRange(num)) {
159  return (stripDb[num].stat);
160  } else {
161  return NULL;
162  }
163  }
164 
165  Int_t getPed(Int_t num) {
166  if ( itemNumInRange(num)) {
167  return (stripDb[num].ped);
168  } else {
169  return NULL;
170  }
171  }
172 
173  Int_t getPedForGeoId(Int_t geoId) {
174  for(int i = 0; i < numFgtElect; i++) {
175  if ( stripDb[i].geoId == geoId ) {
176  return (stripDb[i].ped);
177  }
178  }
179  return NULL;
180  }
181 
182  Int_t getSigPed(Int_t num) {
183  if ( itemNumInRange(num)) {
184  return (stripDb[num].sigPed);
185  } else {
186  return NULL;
187  }
188  }
189 
190  Int_t getAdc(Int_t num, Int_t tb) {
191  if ( itemNumInRange(num) && (tb >= 0) && (tb < kFgtNumTimeBins)) {
192  return (stripDb[num].adc[tb]);
193  } else {
194  return NULL;
195  }
196  }
197 
198 
199  Int_t getGeometry( Int_t num, Short_t & disc,
200  Short_t & quad, Char_t & layer, Int_t & strip,
201  Double_t & x1, Double_t & y1,
202  Double_t & x2, Double_t & y2,
203  Double_t & z ) {
204  if ( itemNumInRange(num)) {
205  disc = (stripDb[num].disc);
206  quad = (stripDb[num].quad);
207  layer = (stripDb[num].layer);
208  strip = (stripDb[num].strip);
209  x1 = (stripDb[num].x1);
210  y1 = (stripDb[num].y1);
211  x2 = (stripDb[num].x2);
212  y2 = (stripDb[num].y2);
213  z = (stripDb[num].Z);
214  return true;
215  } else {
216  return NULL;
217  }
218  }
219 
220  Int_t getEntryForGeoId(Int_t geoId) {
221  if(geoId >= 0 && geoId < kFgtNumGeoIds) {
222  return entryForGeoId[geoId];
223  } else {
224  return 0;
225  }
226  }
227 
228  // deconstructor
229  virtual ~StFgtSingleEventDisplay();
230 
231  Int_t Init();
232  Int_t Make();
233  Int_t Finish();
234 
235  // modifiers
236 
237  protected:
238  int numFgtElect;
239  StFgtDbMaker *fgtDbMkr;
240 
241  bool itemNumInRange (Int_t num) {
242  return ( (num >= 0) && (num < numFgtElect)) ;
243  }
244 
245 
246  Int_t entryForGeoId[kFgtNumGeoIds];
247 
248  FgtStripDbItem stripDb[mxFgtElect];
249 
250  // for accessing the data
251  StFgtCollection *mFgtCollectionPtr;
252 
253  // to get track of the event
254  Int_t mEventNum;
255 
256  // and for accessing the DB
257  // if name is "", then use naive cosmic setup
258  StFgtDbMaker *mFgtDbMkr;
259  StFgtDb *mDb;
260 
261 
262 
263 
264  private:
265  ClassDef(StFgtSingleEventDisplay,1);
266 
267 };
268 
269 // inline functions
270 
271 // modifiers
272 
273 #endif