1 #ifndef _ST_FGT_STRAIGHT_PLOTTER__
3 #define _ST_FGT_STRAIGHT_PLOTTER__
13 #include "StFgtStraightTrackMaker.h"
22 template<
class T>
void createPlots(T*** pH,
int numH,
const char* nameBase,
int numBin,
int first,
int last);
23 StFgtStraightPlotter(
const Char_t* name=
"FgtStraightPlotter",
const Char_t* trackerName=
"fgtStraightTracker");
24 pair<Double_t,Double_t> findCluChargeSize(Int_t iD,Char_t layer, Double_t ordinate);
26 void setMaxDistChi(Float_t maxDChi);
30 void setUseChargeMatch(Bool_t use=
true);
31 void setPrint(Bool_t print);
32 void setDcaCut(Int_t dca_in_cm);
34 virtual const char *GetCVS()
const
35 {
static const char cvs[]=
"Tag $Name: $ $Id: StFgtStraightPlotter.h,v 1.10 2014/08/06 11:43:10 jeromel Exp $ built " __DATE__
" " __TIME__ ;
return cvs;}
36 void SetEffDisk(Int_t disk)
40 void SetFileBase(
const Char_t* filebase,
const Char_t* filename=
"");
46 Bool_t pulseCondition;
48 Float_t maxDistStrip_R;
49 Float_t maxDistStrip_Phi;
53 Char_t mFileBase[300];
54 Char_t mFileName[200];
55 Char_t mTrackerName[200];
60 vector<TH2D*> v_hClusP;
61 vector<TH2D*> v_hClusR;
62 Bool_t useChargeMatch;
66 ofstream* cluNotFoundTxt;
67 Float_t chargeMatchCut;
68 vector<generalCluster>** pClusters;
69 vector<generalStrip>* pStrips;
70 void setChargeMatchCut(Float_t cut);
71 Bool_t arePointsMatched(vector<generalCluster>::iterator c1, vector<generalCluster>::iterator c2);
73 pair<Double_t,Double_t> getChargeRatio(Float_t r, Float_t phi, Int_t iD, Int_t iq);
74 Bool_t printArea(Float_t r, Float_t phi, Int_t iD, Int_t iq);
75 Bool_t printArea1D(Int_t iD, Int_t iq,Int_t centerGeoId);
76 Bool_t getTrack(vector<AVPoint>& points, Double_t ipZ);
77 pair<double,double>
getDca( vector<AVTrack>::iterator it);
81 void saveSigs(Double_t* sigR, Double_t* sigP, Double_t r, Double_t phi,Int_t maxR, Int_t maxPhi, Int_t discId, Int_t quad);
82 void doNormalize(TH2D** hEff, TH2D** hNonEff);
83 Double_t getRPhiRatio(vector<generalCluster>::iterator hitIterBegin, vector<generalCluster>::iterator hitIterEnd);
84 Double_t
findClosestPoint(
float mx,
float bx,
float my,
float by,
double xE,
double yE, Int_t iD);
85 Bool_t isSomewhatEff(Float_t r, Float_t phi, Int_t iD, Int_t iq);
87 Double_t findClosestStrip(Char_t layer,
double ord, Int_t iD, Int_t iQ);
89 Bool_t fitTheStrip(
generalStrip* pStrip,
generalStrip* pStripOtherLayer,
float* amp,
float* t0,
float* chi2Ndf,
int iD,
int iq,
int apvBin, Char_t layer);
101 TH2D** radioPlotsEff;
102 TH2D** radioPlotsNonEff;
107 TH2D** radioPlotsTrackHits;
108 TH2D** radioPlotsClusChargeR;
109 TH2D** radioPlotsClusSizeR;
110 TH2D** radioPlotsClusChargeP;
111 TH2D** radioPlotsClusSizeP;
113 TH2D** chargeCorrTracks;
114 TH2D** chargeCorrTracksRCut;
122 TH2D** radioPlotsEffR;
123 TH2D** radioPlotsNonEffR;
125 TH2D** radioPlotsEffPhi;
126 TH2D** radioPlotsNonEffPhi;
128 TH2D** radioPlotsEffLoose;
129 TH2D** radioPlotsNonEffLoose;
132 TH2D* chargeCorrSum3;
134 TH2D* chargeCorrMaxStrip;
135 TH2D* chargeCorrMaxAdc;
138 TH1F** firstTbSigCloseClusterR;
139 TH1F** firstTbSigCloseClusterP;
140 TH1F** firstTbSigTrackClusterR;
141 TH1F** firstTbSigTrackClusterP;
144 TH1I** maxTbCloseClusterR;
145 TH1I** maxTbCloseClusterP;
147 TH1I** maxTbTrackClusterR;
148 TH1I** maxTbTrackClusterP;
150 TH1I** maxAdcTrackClusterR;
151 TH1I** maxAdcCloseClusterR;
153 TH1I** maxSigTrackClusterR;
154 TH1I** maxSigCloseClusterR;
158 TH1I** numClustersPhi;
162 TH1I* numPointsPerTrack;
164 TH1I** numFSigTrackClusterR;
165 TH1I** numFSigCloseClusterR;
167 TH1I** numFirstHighTrackClusterR;
168 TH1I** numFirstHighCloseClusterR;
170 TH1I** maxAdcTrackClusterP;
171 TH1I** maxAdcCloseClusterP;
173 TH1F** chargeTrackClusterR;
174 TH1F** chargeTrackClusterP;
175 TH1F** chargeTrackClusterRvsP;
176 TH1F** chargeTrackClusterPvsR;
177 TH1F** numTrackClusterR;
178 TH1F** numTrackClusterP;
179 TH1F** numTrackSymCutClusterR;
180 TH1F** numTrackSymCutClusterP;
191 TH1F** chargeTrackSymCutClusterR;
192 TH1F** chargeTrackSymCutClusterP;
194 TH1F** maxSigTrackClusterP;
195 TH1F** maxSigCloseClusterP;
197 TH1I** numFSigTrackClusterP;
198 TH1I** numFSigCloseClusterP;
200 TH1I** numFirstHighTrackClusterP;
201 TH1I** numFirstHighCloseClusterP;
203 TH1F** secondToLastRatioCloseClusterP;
204 TH1F** secondToLastRatioCloseClusterR;
206 TH1F** secondToLastRatioTrackClusterP;
207 TH1F** secondToLastRatioTrackClusterR;
218 TH1F** APVfirstTbSigCloseClusterP;
219 TH1F** APVfirstTbSigCloseClusterR;
220 TH1I** APVmaxAdcCloseClusterP;
221 TH1I** APVmaxAdcCloseClusterR;
222 TH1I** APVmaxTbCloseClusterP;
223 TH1I** APVmaxTbCloseClusterR;
224 TH1I** APVnumFSigCloseClusterP;
225 TH1I** APVnumFSigCloseClusterR;
226 TH1I** APVnumFirstHighCloseClusterP;
227 TH1I** APVnumFirstHighCloseClusterR;
228 TH1F** APVmaxSigCloseClusterP;
229 TH1F** APVmaxSigCloseClusterR;
230 TH1F** APVsecondToLastRatioCloseClusterP;
231 TH1F** APVsecondToLastRatioCloseClusterR;
233 TH1F* exPulseMaxAdcNormR;
235 TH1F* exPulseMaxAdcNormP;
238 TH1F* exPulseMaxAdcNormTrackR;
239 TH1F* exPulseSigTrackR;
240 TH1F* exPulseMaxAdcNormTrackP;
241 TH1F* exPulseSigTrackP;
256 TH1D** rPhiRatioPlots;
261 TH2D* chargeRatioInEffDisk;
262 TH2D* chargeAsymInEffDisk;
263 TH2D* chargeCorrInEffDisk;
264 TH2D* tpcFgtZVertexCorr;
265 TH2D* tpcFgtZVertexCorr2;
266 TH2D* tpcFgtZVertexCorr3;
268 TH1D* tpcFgtZVtxDiff;
269 TH1D* tpcFgtZVtxDiff2;
274 TH1D** h_clusterSizeR;
275 TH1D** h_clusterSizePhi;
276 TH1D** h_clusterChargeR;
277 TH1D** h_clusterChargePhi;
298 TFile* pulsePictureFile;
311 inline void StFgtStraightPlotter::setUseChargeMatch(Bool_t use){useChargeMatch=use;};
312 inline void StFgtStraightPlotter::setChargeMatchCut(Float_t cut)
313 {chargeMatchCut=cut;};
314 inline void StFgtStraightPlotter::setMaxDistChi(Float_t maxDChi)
318 inline void StFgtStraightPlotter::setPrint(Bool_t print)
322 inline void StFgtStraightPlotter::setDcaCut(Int_t dca_in_cm)
pair< double, double > getDca(vector< AVTrack >::iterator it)
void fillStripHistos(Float_t r, Float_t phi, Int_t iD, Int_t iq)
Double_t findClosestPoint(float mx, float bx, float my, float by, double xE, double yE, Int_t iD)
Short_t getQuadFromCoo(Double_t x, Double_t y)
this is too naive..., assumes non-rotated quads