00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "StBadDcaAnalysis.h"
00030
00031
00032
00033
00034 StBadDcaAnalysis::StBadDcaAnalysis(const char* inputDir,
00035 const char* outRootName)
00036 : StHiBaseAnalysis(inputDir,outRootName)
00037
00038 {
00039
00040 }
00041
00042
00043
00044 StBadDcaAnalysis::~StBadDcaAnalysis()
00045 {
00046 }
00047
00048
00049
00050
00051
00052
00053
00054 Int_t
00055 StBadDcaAnalysis::initMore()
00056 {
00057 return 0;
00058 }
00059
00060
00061 void
00062 StBadDcaAnalysis::initHistograms()
00063 {
00064 cout << "StBadDcaAnalysis::initHistograms()" << endl;
00065
00066
00067
00068 using namespace Bin;
00069
00070
00071
00072 char name[500];
00073
00074 char* cPM[2] = {"Plus","Minus"};
00075
00076 for(int ipm=0; ipm<2; ipm++){
00077
00078
00079 setName(name,"h3DcaXYGlFitPtsPtPr",cPM[ipm]);
00080 pm[ipm].h3DcaXYGlFitPtsPtPr
00081 = new TH3D(name,name,
00082 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00083 nFitPtsBin,fitPtsMin,fitPtsMax,
00084 nPtTinyBin,ptTinyMin,ptTinyMax);
00085
00086 pm[ipm].h3DcaXYGlFitPtsPtPr->SetXTitle("dcaXYGl");
00087 pm[ipm].h3DcaXYGlFitPtsPtPr->SetYTitle("fitPts");
00088 pm[ipm].h3DcaXYGlFitPtsPtPr->SetZTitle("ptPr");
00089
00090
00091 setName(name,"h3DcaXYGlAllPtsPtPr",cPM[ipm]);
00092 pm[ipm].h3DcaXYGlAllPtsPtPr
00093 = new TH3D(name,name,
00094 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00095 nFitPtsBin,fitPtsMin,fitPtsMax,
00096 nPtTinyBin,ptTinyMin,ptTinyMax);
00097
00098 pm[ipm].h3DcaXYGlAllPtsPtPr->SetXTitle("dcaXYGl");
00099 pm[ipm].h3DcaXYGlAllPtsPtPr->SetYTitle("allPts");
00100 pm[ipm].h3DcaXYGlAllPtsPtPr->SetZTitle("ptPr");
00101
00102
00103 setName(name,"h3DcaXYGlRatioPtsPtPr",cPM[ipm]);
00104 pm[ipm].h3DcaXYGlRatioPtsPtPr
00105 = new TH3D(name,name,
00106 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00107 100,0,1,
00108 nPtTinyBin,ptTinyMin,ptTinyMax);
00109
00110 pm[ipm].h3DcaXYGlRatioPtsPtPr->SetXTitle("dcaXYGl");
00111 pm[ipm].h3DcaXYGlRatioPtsPtPr->SetYTitle("ratioPts");
00112 pm[ipm].h3DcaXYGlRatioPtsPtPr->SetZTitle("ptPr");
00113
00114
00115 setName(name,"h3DcaXYGlFirstRowPtPr",cPM[ipm]);
00116 pm[ipm].h3DcaXYGlFirstRowPtPr
00117 = new TH3D(name,name,
00118 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00119 45,0.5,45.5,
00120 nPtTinyBin,ptTinyMin,ptTinyMax);
00121
00122 pm[ipm].h3DcaXYGlFirstRowPtPr->SetXTitle("dcaXYGl");
00123 pm[ipm].h3DcaXYGlFirstRowPtPr->SetYTitle("firstRow");
00124 pm[ipm].h3DcaXYGlFirstRowPtPr->SetZTitle("ptPr");
00125
00126
00127 setName(name,"h3DcaXYGlLastRowPtPr",cPM[ipm]);
00128 pm[ipm].h3DcaXYGlLastRowPtPr
00129 = new TH3D(name,name,
00130 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00131 45,0.5,45.5,
00132 nPtTinyBin,ptTinyMin,ptTinyMax);
00133
00134 pm[ipm].h3DcaXYGlLastRowPtPr->SetXTitle("dcaXYGl");
00135 pm[ipm].h3DcaXYGlLastRowPtPr->SetYTitle("firstRow");
00136 pm[ipm].h3DcaXYGlLastRowPtPr->SetZTitle("ptPr");
00137
00138
00139 setName(name,"h3DcaXYGlLocalPhiPtPr",cPM[ipm]);
00140 pm[ipm].h3DcaXYGlLocalPhiPtPr
00141 = new TH3D(name,name,
00142 nDcaXYGlBin,dcaXYGlMin,dcaXYGlMax,
00143 30,-15,15,
00144 nPtTinyBin,ptTinyMin,ptTinyMax);
00145
00146 pm[ipm].h3DcaXYGlLocalPhiPtPr->SetXTitle("dcaXYGl");
00147 pm[ipm].h3DcaXYGlLocalPhiPtPr->SetYTitle("localPhi");
00148 pm[ipm].h3DcaXYGlLocalPhiPtPr->SetZTitle("ptPr");
00149
00150
00151 }
00152
00153
00154 }
00155
00156
00157
00158 void
00159 StBadDcaAnalysis::trackLoop()
00160 {
00161 if(mDebug)
00162 cout << "StBadDcaAnalysis::spectraTrackLoop()" << endl;
00163
00164 Int_t nTrack = mHiMicroEvent->NTrack();
00165 StHiMicroTrack* track;
00166
00167 Float_t vertexZ = mHiMicroEvent->VertexZ();
00168
00169 for(Int_t i=0; i<nTrack; i++){
00170 track =(StHiMicroTrack*) mHiMicroEvent->tracks()->At(i);
00171
00172
00173
00174 if(!CutRc::AcceptTrackVtxZHalf(track,vertexZ)) continue;
00175
00176
00177 Float_t ptPr = track->PtPr();
00178
00179
00180
00181 float fitPts = track->FitPts();
00182 float allPts = track->AllPts();
00183 float ratioPts = float(fitPts/allPts);
00184 float firstRow = track->FirstPadRow();
00185 float lastRow = track->LastPadRow();
00186
00187 float dcaXYGl = track->DcaXYGl();
00188 float phiGlDeg = track->PhiGl()*180./M_PI;;
00189 phiGlDeg = (phiGlDeg<-165) ? (phiGlDeg += 360) : phiGlDeg;
00190
00191 int ic=(track->Charge()>0) ? 0 : 1;
00192
00193 if(CutRc::AcceptEta(track)){
00194
00195 pm[ic].h3DcaXYGlFitPtsPtPr->Fill(dcaXYGl,fitPts,ptPr);
00196
00197
00198 pm[ic].h3DcaXYGlAllPtsPtPr->Fill(dcaXYGl,allPts,ptPr);
00199
00200
00201 pm[ic].h3DcaXYGlRatioPtsPtPr->Fill(dcaXYGl,ratioPts,ptPr);
00202
00203 if(CutRc::AcceptFitPts(track)){
00204
00205 pm[ic].h3DcaXYGlFirstRowPtPr->Fill(dcaXYGl,firstRow,ptPr);
00206
00207
00208 pm[ic].h3DcaXYGlLastRowPtPr->Fill(dcaXYGl,lastRow,ptPr);
00209
00210
00211 }
00212 }
00213
00214
00215 }
00216 }
00217
00218
00219
00220 void
00221 StBadDcaAnalysis::fillEventHistograms()
00222 {
00223
00224 }
00225
00226
00227
00228
00229 Bool_t
00230 StBadDcaAnalysis::acceptEvent(StHiMicroEvent* event)
00231 {
00232 return CutRc::Accept(event);
00233
00234 }
00235
00236
00237
00238
00239 void
00240 StBadDcaAnalysis::finishHistograms()
00241 {
00242
00243
00244 }
00245
00246
00247
00248
00249
00250 ClassImp(StBadDcaAnalysis)