StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFgtGeneralBase.h
1 #ifndef _ST_FGT_GENERAL_BASE_MAKER_
2 #define _ST_FGT_GENERAL_BASE_MAKER_
3 
4 #include "StMaker.h"
5 //#include "StFgtQaMaker.h"
6 #include <TH2D.h>
7 #include <TROOT.h>
8 #include <TStyle.h>
9 #include <TCanvas.h>
10 #include <TFile.h>
11 #include <vector>
12 #include <TVector3.h>
13 #include "StRoot/StFgtDbMaker/StFgtDbMaker.h"
14 #include "StRoot/StFgtDbMaker/StFgtDb.h"
15 #include "StRoot/StFgtUtil/StFgtConsts.h"
16 
17 
18 //#define COSMIC
19 class StFgtStrip;
20 class StFgtCollection;
21 class StFgtHit;
22 //class StFgtCollection;
23 
24 //#include "StRoot/StEvent/StFgtCollection.h"
25 /*
26 this class is basically just to fill general clusters from StEvent and MuDsts
27 */
29 {
30  generalStrip(){};
31  generalStrip(Int_t mGeo, Int_t mPed, Int_t mPedErr, Int_t mSeedType, Double_t mCharge, Double_t mChargeUncert)
32  {
33  geoId=mGeo;
34  ped=mPed;
35  pedErr=mPedErr;
36  seedType=mSeedType;
37  charge=mCharge;
38  chargeUncert=mChargeUncert;
39  maxAdc=-1;
40 
41  };
42  StFgtStrip* fgtStrip;
43  Int_t geoId;
44  Int_t ped;
45  Int_t pedErr;
46  Int_t seedType;
47  Int_t adc[7]; //timebins
48  Double_t charge;
49  Double_t chargeUncert;
50  Double_t maxAdc;
51 
52 };
54 {
55  generalCluster(){};
56  generalCluster(Int_t csg, Char_t l, Double_t dZ, Double_t pP, Double_t pR, Double_t q, Double_t d, Double_t s, Int_t cs, Int_t cc, Float_t cUncert)
57  {
58  centralStripGeoId=csg;
59  layer=l;
60  discZ=dZ;
61  posPhi=pP;
62  posR=pR;
63  quad=q;
64  disc=d;
65  strip=s;
66  clusterSize=cs;
67  clusterCharge=cc;
68  centerStripIdx=-1;
69  maxAdcInt=-1;
70  maxAdc=-1;
71  hasMatch=false;
72  seedType=kFgtSeedTypeNo;
73  clusterChargeUncert=cUncert;
74  };
75 
76 
77  StFgtHit* fgtHit;
78  Int_t seedType;
79  Int_t centralStripGeoId;
80  Char_t layer;
81  Double_t discZ;
82  Double_t posPhi;
83  Double_t posR;
84  Short_t quad;
85  Short_t disc;
86  Short_t strip;
87  Int_t clusterSize;
88  Int_t clusterCharge;
89  Float_t clusterChargeUncert;
90  Int_t centerStripIdx;
91  Double_t maxAdc;
92  Double_t maxAdcInt;
93  Bool_t hasMatch;
94 
95 };
96 
97 class StFgtGeneralBase : public StMaker {
98  public:
99  Double_t vtxZ;
100  Int_t vtxRank;
101  Int_t mVertexNumber;
102  StFgtGeneralBase(const Char_t* name="FgtGeneralBase");
103 
104  void fillFromEvent(Bool_t fillFromEv=true); //default, no, use mDsts
105  Bool_t isCosmic()
106  {
107  return m_isCosmic;
108  }
109  void setCosmic(Bool_t iC)
110  {
111  m_isCosmic=iC;
112  }
113  void useEHTTrig(Bool_t useEHTTrig);
114 
115  void setVertexNumber(Int_t r=0);
116  void doLooseClustering();
117  //check if cluster has energy match in other layer
118  void checkMatches();
119  Int_t Make();
120  Int_t Finish();
121  Int_t fillFromStEvent(StFgtCollection* fgtCollectionPtr);
123  void setChargeMatchCut(Float_t cut);
124 
125 static float getLocDiscZ(int iD)
126  {
127 #ifndef COSMIC
128  return StFgtGeom::getDiscZ(iD);
129 #endif
130 
131  switch(iD)
132  {
133  case 0:
134  return 0.0;
135  case 1:
136  return 16.51;
137  case 2:
138  return 2.0*16.51;
139  default:
140  return -100;
141  }
142  return -100;
143 
144  }
145 
146 
147  void SetEffDisk(Int_t disk)
148  {
149  m_effDisk=disk;
150  }
151  StFgtCollection* getFgtCollection()
152  {
153  return fgtCollection;
154  }
155 
156  vector<generalCluster>** getClusters()
157  {
158  return pClusters;
159  }
160 
161  vector<generalStrip>* getStrips()
162  {
163  return pStrips;
164  }
165  static Bool_t arePointsMatched(vector<generalCluster>::iterator c1, vector<generalCluster>::iterator c2);
166  void SetFileBase(const Char_t* filebase);
167  protected:
168 
169  Char_t fileBase[300];
170 enum evStatCodes
171  {
172  numEvents,
173  numCluster,
174  numCluSeed1,
175  numCluSeed2,
176  numCluSeed3
177  };
178  StFgtCollection* fgtCollection;
179  Bool_t m_fillFromEvent;
180  Bool_t m_isCosmic;
181  Bool_t mUseEHTTrigs;
182  //EHT1*L2EW == 430315
183  //EHT1 == 430313
184  //EHT0 == 430312
185  static const Int_t trigID[3];
186 
187  TH1D* clusWChargeMatch;
188  TH1D* clusWOChargeMatch;
189  TH1D* evStatistics;
190  TH2D* chargeMaxAdcCorr;
191  TH2D* chargeMaxAdcIntCorr;
192  TH1D* hIpZEv;
193  TH1D** hNumPulsesP;
194  TH1D** hNumChargesP;
195  TH1D** hNumPulsesR;
196  TH1D** hNumChargesR;
197  TH1D** hNumClustersP;
198  TH1D** hNumClustersR;
199 
200 
201 
202  map<Int_t, Int_t> mapGeoId2Cluster;
203  StFgtDb* mDb;
204 
205  static Float_t chargeMatchCut;
206 
207  Int_t evtNr;
208  Int_t m_effDisk;
209  vector<generalCluster> clustersD1;
210  vector<generalCluster> clustersD2;
211  vector<generalCluster> clustersD3;
212  vector<generalCluster> clustersD4;
213  vector<generalCluster> clustersD5;
214  vector<generalCluster> clustersD6;
215  vector<generalCluster>** pClusters;
216  vector<generalStrip>* pStrips;
217  Bool_t validPulse(generalStrip& strip);
218  void checkNumPulses();
219  void doEvAssoc();
220 
221  private:
222  ClassDef(StFgtGeneralBase,1);
223 };
224 inline void StFgtGeneralBase::setChargeMatchCut(Float_t cut)
225 {chargeMatchCut=cut;};
226 inline void StFgtGeneralBase::setVertexNumber(Int_t r)
227 {
228  mVertexNumber=r;
229 }
230 inline void StFgtGeneralBase::useEHTTrig(Bool_t useEHTTrig)
231 {
232  mUseEHTTrigs=useEHTTrig;
233 }
234 #endif
Int_t fillFromMuDst(StFgtCollection &)