StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StPidStatus.cxx
1 #ifdef __TFG__VERSION__
2 #include "StPicoEvent/StPicoDst.h"
3 #endif /* __TFG__VERSION__ */
4 #include "StPidStatus.h"
5 #include "StBichsel/Bichsel.h"
6 #include "StBichsel/StdEdxModel.h"
7 #include "StBichsel/StdEdxPull.h"
8 #include "StGlobalTrack.h"
9 #include "StTrackGeometry.h"
10 
11 #include "TMath.h"
12 #include "TVector3.h"
13 //________________________________________________________________________________
14 StBTofPidTraits StPidStatus::SetBTofPidTraits(const StMuBTofPidTraits &pid) {
15  StBTofPidTraits btofPidTraits;
16  btofPidTraits.setMatchFlag (pid.matchFlag());
17  btofPidTraits.setYLocal (pid.yLocal());
18  btofPidTraits.setZLocal (pid.zLocal());
19  btofPidTraits.setThetaLocal (pid.thetaLocal());
20  btofPidTraits.setTimeOfFlight (pid.timeOfFlight());
21  btofPidTraits.setPathLength (pid.pathLength());
22  btofPidTraits.setBeta (pid.beta());
23 
24  btofPidTraits.setPosition (pid.position());
25 
26  btofPidTraits.setSigmaElectron(pid.sigmaElectron());
27  btofPidTraits.setSigmaPion (pid.sigmaPion());
28  btofPidTraits.setSigmaKaon (pid.sigmaKaon());
29  btofPidTraits.setSigmaProton (pid.sigmaProton());
30  btofPidTraits.setProbElectron (pid.probElectron());
31  btofPidTraits.setProbPion (pid.probPion());
32  btofPidTraits.setProbKaon (pid.probKaon());
33  btofPidTraits.setProbProton (pid.probProton());
34  return btofPidTraits;
35 }
36 #ifdef __TFG__VERSION__
37 //________________________________________________________________________________
38 StBTofPidTraits StPidStatus::SetBTofPidTraits(const StPicoBTofPidTraits &pid) {
39  StBTofPidTraits btofPidTraits;
40  btofPidTraits.setMatchFlag (pid.btofMatchFlag());
41  btofPidTraits.setYLocal (pid.btofYLocal());
42  btofPidTraits.setZLocal (pid.btofZLocal());
43  // btofPidTraits.setThetaLocal (pid.btofThetaLocal());
44  // btofPidTraits.setTimeOfFlight (pid.btofTimeOfFlight());
45  // btofPidTraits.setPathLength (pid.btofPathLength());
46  btofPidTraits.setBeta (pid.btofBeta());
47  btofPidTraits.setPosition (StThreeVectorF(pid.btofHitPosX(),pid.btofHitPosY(),pid.btofHitPosZ()));
48 
49  btofPidTraits.setSigmaElectron(pid.nSigmaElectron());
50  btofPidTraits.setSigmaPion (pid.nSigmaPion());
51  btofPidTraits.setSigmaKaon (pid.nSigmaKaon());
52  btofPidTraits.setSigmaProton (pid.nSigmaProton());
53  // btofPidTraits.setProbElectron (pid.btofProbElectron());
54  // btofPidTraits.setProbPion (pid.btofProbPion());
55  // btofPidTraits.setProbKaon (pid.btofProbKaon());
56  // btofPidTraits.setProbProton (pid.btofProbProton());
57  return btofPidTraits;
58 }
59 #endif /* __TFG__VERSION__ */
60 //________________________________________________________________________________
61 StETofPidTraits StPidStatus::SetETofPidTraits(const StMuETofPidTraits &pid) {
62  StETofPidTraits etofPidTraits;
63  etofPidTraits.setMatchFlag( pid.matchFlag ());
64  etofPidTraits.setLocalX( pid.localX ());
65  etofPidTraits.setLocalY( pid.localY ());
66  etofPidTraits.setThetaLocal( pid.thetaLocal ());
67  etofPidTraits.setPosition( pid.position ());
68  etofPidTraits.setDeltaX( pid.deltaX ());
69  etofPidTraits.setDeltaY( pid.deltaY ());
70  etofPidTraits.setTimeOfFlight(pid.timeOfFlight());
71  etofPidTraits.setPathLength( pid.pathLength ());
72  etofPidTraits.setBeta( pid.beta ());
73  return etofPidTraits;
74 }
75 #ifdef __TFG__VERSION__
76 //________________________________________________________________________________
77 StETofPidTraits StPidStatus::SetETofPidTraits(const StPicoETofPidTraits &pid) {
78  StETofPidTraits etofPidTraits;
79  etofPidTraits.setMatchFlag( pid.matchFlag ());
80  // etofPidTraits.setLocalX( pid.localX ());
81  // etofPidTraits.setLocalY( pid.localY ());
82  // etofPidTraits.setThetaLocal( pid.thetaLocal ());
83  etofPidTraits.setPosition (StThreeVectorF(pid.crossingX(),pid.crossingY(),pid.crossingZ()));
84  etofPidTraits.setDeltaX( pid.deltaX ());
85  etofPidTraits.setDeltaY( pid.deltaY ());
86  etofPidTraits.setTimeOfFlight(pid.tof ());
87  // etofPidTraits.setPathLength( pid.pathLength ());
88  etofPidTraits.setBeta( pid.beta ());
89  return etofPidTraits;
90 }
91 //________________________________________________________________________________
92 StMtdPidTraits StPidStatus::SetMtdPidTraits(const StPicoMtdPidTraits &pid) {
93  StMtdPidTraits mtdPidTraits;
94  mtdPidTraits.setMatchFlag (pid.matchFlag());
95 // mtdPidTraits.setYLocal (pid.yLocal());
96 // mtdPidTraits.setZLocal (pid.zLocal());
97  mtdPidTraits.setDeltaY (pid.deltaY());
98  mtdPidTraits.setDeltaZ (pid.deltaZ());
99  // mtdPidTraits.setThetaLocal (pid.thetaLocal());
100  // mtdPidTraits.setTimeOfFlight (pid.timeOfFlight());
101  // mtdPidTraits.setExpTimeOfFlight(pid.expTimeOfFlight());
102  // mtdPidTraits.setPathLength (pid.pathLength());
103  mtdPidTraits.setBeta (pid.beta());
104  // mtdPidTraits.setPosition (pid.position());
105 
106  // mtdPidTraits.setSigmaMuon (pid.sigmaMuon());
107  // mtdPidTraits.setProbMuon (pid.probMuon());
108  return mtdPidTraits;
109 }
110 #endif /* __TFG__VERSION__ */
111 //________________________________________________________________________________
112 StMtdPidTraits StPidStatus::SetMtdPidTraits(const StMuMtdPidTraits &pid) {
113  StMtdPidTraits mtdPidTraits;
114  mtdPidTraits.setMatchFlag (pid.matchFlag());
115  mtdPidTraits.setYLocal (pid.yLocal());
116  mtdPidTraits.setZLocal (pid.zLocal());
117  mtdPidTraits.setDeltaY (pid.deltaY());
118  mtdPidTraits.setDeltaZ (pid.deltaZ());
119  mtdPidTraits.setThetaLocal (pid.thetaLocal());
120  mtdPidTraits.setTimeOfFlight (pid.timeOfFlight());
121  mtdPidTraits.setExpTimeOfFlight(pid.expTimeOfFlight());
122  mtdPidTraits.setPathLength (pid.pathLength());
123  mtdPidTraits.setBeta (pid.beta());
124  mtdPidTraits.setPosition (pid.position());
125 
126  mtdPidTraits.setSigmaMuon (pid.sigmaMuon());
127  mtdPidTraits.setProbMuon (pid.probMuon());
128  return mtdPidTraits;
129 }
130 //________________________________________________________________________________
131 StPidStatus::StPidStatus(StGlobalTrack *gTrack, Bool_t Usedx2) : PiDStatus(-1), fUsedx2(Usedx2) {// , gTrack(Track) {
132  Clear();
133  if (! gTrack) return;
134  g3 = gTrack->geometry()->momentum(); // p of global track
135  StSPtrVecTrackPidTraits &traits = gTrack->pidTraits();
136  if (! traits.size()) return;
137  for (UInt_t i = 0; i < traits.size(); i++) {
138  StTrackPidTraits *trait = traits[i];
139  if (! trait) continue;
140  if ( trait->IsZombie()) continue;
141  Short_t id = trait->detector()%100;
142  if (id == kBTofId) {
143  StBTofPidTraits* pid = dynamic_cast<StBTofPidTraits*>(trait);
144  if (! pid) continue;
145  if (TMath::Abs(pid->yLocal()) < 1.8) fBTof = new StBTofStatus(pid);
146  } else if (id == kETofId) {
147  StETofPidTraits* pid = dynamic_cast<StETofPidTraits*>(trait);
148  if (! pid) continue;
149  fETof = new StETofStatus(pid);
150  } else if (id == kMtdId) {
151  StMtdPidTraits* pid = dynamic_cast<StMtdPidTraits*>(trait);
152  if (! pid) continue;
153  fMtd = new StMtdStatus(pid);
154  } else if (id == kTpcId) {
155  StDedxPidTraits* pid = dynamic_cast<StDedxPidTraits*>(trait);
156  if (pid) {
157  switch (pid->method()) {
158  case kTruncatedMeanId: fI70 = new StdEdxStatus(pid); break;
159  case kLikelihoodFitId: fFit = new StdEdxStatus(pid); break;
160  case kEnsembleTruncatedMeanId: fI70U = new StdEdxStatus(pid); break;// == kTruncatedMeanId+1 uncorrected
161  case kWeightedTruncatedMeanId: fFitU = new StdEdxStatus(pid); break; // == kLikelihoodFitId+1; uncorrected
162  case kOtherMethodId: fdNdx = new StdEdxStatus(pid); break;
163  case kOtherMethodId2: fdNdxU = new StdEdxStatus(pid); break;
164  default: break;
165  }
166  } else {
167  StProbPidTraits *pidprob = dynamic_cast<StProbPidTraits*>(trait);
168  if (pidprob) fProb = pidprob;
169  }
170  }
171  }
172  Set();
173 }
174 //________________________________________________________________________________
175 StPidStatus::StPidStatus(StMuTrack *muTrack, Bool_t Usedx2) : PiDStatus(-1), fUsedx2(Usedx2) {
176  Clear();
177  if (! muTrack) return;
178  const StMuProbPidTraits &probPidTraits = muTrack->probPidTraits();
179  const StMuBTofPidTraits &btofPidTraits = muTrack->btofPidTraits();
180  const StMuETofPidTraits &etofPidTraits = muTrack->etofPidTraits();
181  const StMuMtdPidTraits &mtdPidTraits = muTrack->mtdPidTraits();
182  g3 = muTrack->p(); // p of global track
183  static StDedxPidTraits pidI70;
184  static StDedxPidTraits pidFit;
185  static StDedxPidTraits pidI70U;
186  static StDedxPidTraits pidFitU;
187  static StDedxPidTraits pidNdx;
188  static StDedxPidTraits pidNdxU;
189  static StBTofPidTraits pidBTof;
190  static StETofPidTraits pidETof;
191  static StMtdPidTraits pidMtd;
192  if (probPidTraits.dEdxTruncated() > 0) {
193  pidI70 = StDedxPidTraits(kTpcId, kTruncatedMeanId, 100*((UShort_t)probPidTraits.dEdxTrackLength()) + muTrack->nHitsDedx(),
194  probPidTraits.dEdxTruncated(), probPidTraits.dEdxErrorTruncated(),probPidTraits.log2dX());
195  fI70 = new StdEdxStatus(&pidI70);
196  }
197  if (probPidTraits.dEdxFit() > 0) {
198  pidFit = StDedxPidTraits(kTpcId, kLikelihoodFitId, 100*((UShort_t)probPidTraits.dEdxTrackLength()) + muTrack->nHitsDedx(),
199  probPidTraits.dEdxFit(), probPidTraits.dEdxErrorFit(),probPidTraits.log2dX());
200  fFit = new StdEdxStatus(&pidFit);
201  }
202  if (probPidTraits.dNdxFit() > 0) {
203  pidNdx = StDedxPidTraits(kTpcId, kOtherMethodId, 100*((UShort_t)probPidTraits.dEdxTrackLength()) + muTrack->nHitsDedx(),
204  probPidTraits.dNdxFit(), probPidTraits.dNdxErrorFit(),probPidTraits.log2dX());
205  fdNdx = new StdEdxStatus(&pidNdx);
206  }
207  if (btofPidTraits.matchFlag()) {
208  static StBTofPidTraits btof;
209  btof= SetBTofPidTraits(muTrack->btofPidTraits());
210  fBTof = new StBTofStatus(&btof);
211  }
212  if (etofPidTraits.matchFlag()) {
213  static StETofPidTraits etof;
214  etof = SetETofPidTraits(muTrack->etofPidTraits());
215  fETof = new StETofStatus(&etof);
216  }
217  if (mtdPidTraits.matchFlag()) {
218  StMtdPidTraits mtd;
219  mtd = SetMtdPidTraits(muTrack->mtdPidTraits());
220  fMtd = new StMtdStatus(&mtd);
221  }
222 
223  Set();
224 }
225 #ifdef __TFG__VERSION__
226 //________________________________________________________________________________
227 StPidStatus::StPidStatus(StPicoTrack *picoTrack, Bool_t Usedx2) : PiDStatus(-1), fUsedx2(Usedx2) {
228  Clear();
229  if (! picoTrack) return;
230  TVector3 gMom = picoTrack->gMom();
231  g3 = StThreeVectorF(gMom.X(), gMom.Y(), gMom.Z()); // p of global track
232  static StDedxPidTraits pidI70;
233  static StDedxPidTraits pidFit;
234  static StDedxPidTraits pidI70U;
235  static StDedxPidTraits pidFitU;
236  static StDedxPidTraits pidNdx;
237  static StDedxPidTraits pidNdxU;
238  static StBTofPidTraits pidBTof;
239  static StETofPidTraits pidETof;
240  static StMtdPidTraits pidMtd;
241  if (picoTrack->dEdx() > 0) {
242 #if 0 /* no I70 on picoDst */
243  pidI70 = StDedxPidTraits(kTpcId, kTruncatedMeanId, picoTrack->nHitsDedx(),
244  1e-6*picoTrack->dEdx(), picoTrack->dEdxError());
245  fI70 = new StdEdxStatus(&pidI70);
246 #endif
247  pidFit = StDedxPidTraits(kTpcId, kLikelihoodFitId, picoTrack->nHitsDedx(),
248  1e-6*picoTrack->dEdx(), picoTrack->dEdxError());
249  fFit = new StdEdxStatus(&pidFit);
250  }
251  if (picoTrack->dNdx() > 0) {
252  pidNdx = StDedxPidTraits(kTpcId, kOtherMethodId, picoTrack->nHitsDedx(),
253  picoTrack->dNdx(), picoTrack->dNdxError());
254  fdNdx = new StdEdxStatus(&pidNdx);
255  }
256  Int_t ibtof = picoTrack->bTofPidTraitsIndex();
257  if (ibtof >= 0) {
258  static StBTofPidTraits pidBTof;
259  pidBTof = SetBTofPidTraits(*StPicoDst::instance()->btofPidTraits(ibtof));
260  fBTof = new StBTofStatus(&pidBTof);
261  }
262  Int_t ietof = picoTrack->eTofPidTraitsIndex();
263  if (ietof >= 0) {
264  static StETofPidTraits pidETof;
265  pidETof = SetETofPidTraits(*StPicoDst::instance()->etofPidTraits(ietof));
266  fETof = new StETofStatus(&pidETof);
267  }
268  Int_t imtd = picoTrack->mtdPidTraitsIndex();
269  if (imtd >= 0) {
270  static StMtdPidTraits pidMtd;
271  pidMtd = SetMtdPidTraits(*StPicoDst::instance()->mtdPidTraits(imtd));
272  fMtd = new StMtdStatus(&pidMtd);
273  }
274 
275  Set();
276 }
277 #endif /* __TFG__VERSION__ */
278 //________________________________________________________________________________
279 void StPidStatus::Set() {
280  if (! fI70 && ! fFit && ! fdNdx) return;
281  PiDStatus = 0;
282  Double_t pMomentum = g3.mag();
283  // Double_t bg = TMath::Log10(pMomentum/StProbPidTraits::mPidParticleDefinitions[kPidPion]->mass());
284  Int_t l;
285  PredBMN[0] = Pred70BMN[0] = 1;
286  PredBMN[1] = Pred70BMN[1] = -1;
287  memset (fStatus, 0, sizeof(fStatus));
288  fStatus[kTruncatedMeanId] = fI70 ;
289  fStatus[kLikelihoodFitId] = fFit ;
290  fStatus[kEnsembleTruncatedMeanId] = fI70U ;
291  fStatus[kWeightedTruncatedMeanId] = fFitU ;
292  fStatus[kOtherMethodId] = fdNdx ;
293  fStatus[kOtherMethodId2] = fdNdxU ;
294  for (l = kPidElectron; l < KPidParticles; l++) {
295  Int_t charge = StProbPidTraits::mPidParticleDefinitions[l]->charge();
296  Double_t mass = StProbPidTraits::mPidParticleDefinitions[l]->mass();
297  Double_t betagamma = pMomentum*TMath::Abs(charge)/mass;
298  bgs[l] = betagamma;
299  bghyp[l] = TMath::Log10(bgs[l]);
300  for (Int_t k = 1; k <= kOtherMethodId2; k++) {
301  if (! fStatus[k]) continue;
302  UChar_t fit = 0;
303  if (k == kLikelihoodFitId || k == kWeightedTruncatedMeanId) fit = 1;
304  else if (k == kOtherMethodId || k == kOtherMethodId2) fit = 2;
305  if (fUsedx2)
306  fStatus[k]->Pred[l] = StdEdxPull::EvalPred2(betagamma, fStatus[k]->log2dX(), fit, charge);
307  else
308  fStatus[k]->Pred[l] = StdEdxPull::EvalPred(betagamma, fit, charge);
309  if (fStatus[k]->I() > 0) {
310  fStatus[k]->dev[l] = TMath::Log(fStatus[k]->I()/fStatus[k]->Pred[l]);
311  fStatus[k]->devS[l] = -999;
312  if (fStatus[k]->D() > 0) {
313  fStatus[k]->devS[l] = fStatus[k]->dev[l]/fStatus[k]->D();
314  }
315  }
316  if (fStatus[k]->Pred[l] < PredBMN[0]) PredBMN[0] = fStatus[k]->Pred[l];
317  if (fStatus[k]->Pred[l] > PredBMN[1]) PredBMN[1] = fStatus[k]->Pred[l];
318  }
319  }
320  PiDkey = -1; // best
321  PiDkeyU = -1; // only one with devZs<3,
322  PiDkeyU3 = -1; // -"- and devZs > 5 for all others
323  lBest = -1;
324 #if 0
325  Int_t lBestTof = -1;
326  // use Tof
327  Double_t devZkin = 999;
328  if (fBTof->fPiD) {
329  for (l = kPidElectron; l < KPidParticles; l++) {
330  if (l == kPidMuon ) devTof[l] = devTof[kPidPion];
331  else if (l >= kPidDeuteron) devTof[l] = devTof[kPidProton];
332  else devTof[l] = TMath::Abs(fBTof.Sigma(l));
333  }
334  for (l = kPidElectron; l < KPidParticles; l++) {
335  if (devTof[l] < 3.0) PiDStatus |= 1<<l;
336  if (devTof[l] < devZmin) {devZmin = devTof[l]; lBestTof = l;}
337  }
338  if (devZmin > 5) {lBestTof = -1;}
339  }
340  devZmin = 999;
341  for (l = kPidElectron; l < KPidParticles; l++) {
342  if (devZs[l] < 3.0) PiDStatus |= 1<<l;
343  Double_t dev = devZs[l]*devZs[l];
344  if (lBestTof >= 0) dev += devTof[l]*devTof[l];
345  if (dev < devZmin) {
346  lBest = l;
347  devZmin = dev;
348  }
349  }
350  if (lBest >=0) {
351  if (devZs[lBest] < 3.0) {
352  PiDkey = lBest;
353  Int_t lNext = -1;
354  devZmin = 999;
355  for (l = kPidElectron; l < KPidParticles; l++) {
356  if (l == lBest) continue;
357  Double_t dev = devZs[l]*devZs[l];
358  if (lBestTof >= 0) dev += devTof[l]*devTof[l];
359  if (dev < devZmin) {devZmin = dev; lNext = l;}
360  }
361  if (lNext >= 0) {
362  Double_t dev = devZs[lNext]*devZs[lNext];
363  if (lBestTof >= 0) dev += devTof[lNext]*devTof[lNext];
364  if (dev > 9.) {
365  PiDkeyU = PiDkey;
366  if (dev > 25.) PiDkeyU3 = PiDkeyU;
367  }
368  }
369  }
370  }
371 #endif
372 }
373 //________________________________________________________________________________
374 void StPidStatus::Print(Option_t *opt) const {
375  for (Int_t k = 1; k <= kOtherMethodId2; k++) {
376  if (! fStatus[k]) continue;
377  if (k == kUndefinedMethodId) cout << "UndefinedMethod ";
378  else if (k == kTruncatedMeanId) cout << "TruncatedMean ";
379  else if (k == kEnsembleTruncatedMeanId) cout << "EnsembleTruncatedMean ";
380  else if (k == kLikelihoodFitId) cout << "LikelihoodFit ";
381  else if (k == kWeightedTruncatedMeanId) cout << "WeightedTruncatedMean ";
382  else if (k == kOtherMethodId) cout << "OtherMethod ";
383  else if (k == kOtherMethodId2) cout << "OtherMethodIdentifier2";
384  fStatus[k]->Print();
385  }
386 }
387 //________________________________________________________________________________
388 void StdEdxStatus::Print(Option_t *option) const {
389  if (! fPiD) {cout << "\tEmpty" << endl;}
390  else {
391  Double_t scale = 1;
392  if (I() < 10) cout << "\tI = " << scale*I() << "keV";
393  else cout << "\tI = " << I();
394  cout << " +/- " << 100*D() << "%\tPred: ";
395  for (Int_t l = kPidElectron; l <= kPidPion; l++) {cout << "\t" << scale*Pred[l];}
396  cout << "\tdev:";
397  for (Int_t l = kPidElectron; l <= kPidPion; l++) {cout << "\t" << dev[l];}
398  cout << "\tdevS:";
399  for (Int_t l = kPidElectron; l <= kPidPion; l++) {cout << "\t" << devS[l];}
400  cout << endl;
401  }
402 }
Float_t btofZLocal() const
Return zLocal (compression = zLocal * 1000)
Float_t dEdxError() const
Return dE/dx error of the track (in GeV/cm)
Definition: StPicoTrack.h:118
Float_t beta() const
Return beta.
Holds information about MTD-matched track.
Float_t btofHitPosY() const
Return y comonent of hit position.
Float_t crossingX() const
Return global X coordinate (cm) of the track intersection with an eTOF volume.
float sigmaMuon() const
PID functions.
UShort_t nHitsDedx() const
Return number of hits used for dEdx.
Definition: StMuTrack.h:238
unsigned char matchFlag() const
Matching information.
Float_t dNdxError() const
Return dN/dx error of the track.
Definition: StPicoTrack.h:131
Float_t btofYLocal() const
Return yLocal (compression = yLocal * 1000)
Float_t deltaY() const
Return delta Y.
Int_t PiDkeyU
best
Definition: StPidStatus.h:133
virtual void Clear(Option_t *option="")
User defined functions.
Definition: StMaker.cxx:634
double dEdxFit() const
returns the fitted dEdx value
const StMuETofPidTraits & etofPidTraits() const
dongx
Definition: StMuTrack.h:265
Float_t btofBeta() const
Return beta (compression = beta * 20000)
Hold information about eTOF-matched tracks.
Int_t eTofPidTraitsIndex() const
Return index to the corresponding ETOF PID trait.
Definition: StPicoTrack.h:187
Float_t btofHitPosZ() const
Return z comonent of hit position.
TVector3 gMom() const
Return momentum (GeV/c) of the global tracks at the point of DCA to the primary vertex.
Definition: StPicoTrack.h:64
Float_t dNdx() const
Return dN/dx of the track.
Definition: StPicoTrack.h:129
Float_t crossingY() const
Return global Y coordinate (cm) of the track intersection with an eTOF volume.
unsigned char matchFlag() const
Matching information.
Holds information about track parameters.
Definition: StPicoTrack.h:35
Float_t deltaY() const
Return difference between track intersection and eTOF hit in local Y coordinate (cm) along strips...
Float_t deltaZ() const
Return delta Z.
Int_t PiDkeyU3
only one with devZs&lt;3,
Definition: StPidStatus.h:134
Float_t tof() const
Return time of flight (ns)
Float_t crossingZ() const
Return global Z coordinate (cm) of the track intersection with an eTOF volume.
const StThreeVectorF & p() const
Returns 3-momentum at dca to primary vertex.
Definition: StMuTrack.h:259
double dNdxErrorFit() const
returns the fitted dNdx resolution value
const StMuProbPidTraits & probPidTraits() const
Returns Yuri Fisyak new pid probabilities.
Definition: StMuTrack.h:263
Int_t nHitsDedx() const
Return number of hits used for dE/dx measurement.
Definition: StPicoTrack.h:112
Float_t dEdx() const
Return dE/dx (in keV/cm) of the track.
Definition: StPicoTrack.h:116
Int_t matchFlag() const
float timeOfFlight() const
timing for PID
Int_t lBest
-"- and devZs &gt; 5 for all others
Definition: StPidStatus.h:135
Float_t nSigmaKaon() const
Return nSigma(kaon)
float timeOfFlight() const
timing for PID
Float_t deltaX() const
Return difference between track intersection and eTOF hit in local X coordinate (cm) across strips...
double dEdxErrorFit() const
returns the fitted dEdx resolution value
Float_t nSigmaPion() const
Return nSigma(pion)
double dEdxTrackLength() const
returns the track length in TPC used for dE/dx calculations
double dEdxErrorTruncated() const
returns the truncated 70% dEdx resolution value
Float_t nSigmaProton() const
Return nSigma(proton)
Int_t btofMatchFlag() const
Return matching flag (0 - no match, 1 - one-to-one, 2 - one-to-multiple)
float timeOfFlight() const
timing for PID
float sigmaElectron() const
PID functions.
double dNdxFit() const
returns the fitted dNdx value
Int_t mtdPidTraitsIndex() const
Return index to the corresponding MTD PID trait.
Definition: StPicoTrack.h:185
Float_t btofHitPosX() const
Return x comonent of hit position.
Int_t bTofPidTraitsIndex() const
Return index to the corresponding BTOF PID trait.
Definition: StPicoTrack.h:183
double dEdxTruncated() const
returns the truncated 70% dEdx value
Double_t bgs[KPidParticles]
log10(bg)
Definition: StPidStatus.h:139
Int_t matchFlag() const
Return match flag.
Float_t nSigmaElectron() const
Return nSigma(electron)
Float_t beta() const
Return beta.
unsigned short matchFlag() const
matching information