FairRoot/PandaRoot
PndPidSttInfo.cxx
Go to the documentation of this file.
1 #include "PndPidCorrelator.h"
2 #include "PndSttHit.h"
3 
4 #include <cmath>
5 
6 //_________________________________________________________________
8 
9  std::vector<Double_t> dedxvec;
10  dedxvec.clear();
11 
12  Double_t tuberadius = fSttParameters->GetTubeInRad();
13  Int_t sttCounts = 0, sttRawCounts = 0;
14  PndTrackCand trackCand = track->GetTrackCand();
15  for (size_t ii=0; ii<trackCand.GetNHits(); ii++)
16  {
17  PndTrackCandHit candHit = trackCand.GetSortedHit(ii);
18  Double_t dedx = 0.;
19 
20  if ( ( candHit.GetDetId()!=FairRootManager::Instance()->GetBranchId("STTHit") && fMixMode==kFALSE) ||
21  ( candHit.GetDetId()!=FairRootManager::Instance()->GetBranchId("STTHitMix") && fMixMode==kTRUE) ) continue;
22  PndSttHit *sttHit = (PndSttHit*) fSttHit->At(candHit.GetHitId());
23  if(!sttHit) continue;
24  sttRawCounts++;
25  // compute dE/dx
26  dedx = sttHit->ComputedEdx(track, tuberadius);
27 
28  if(dedx != 0)
29  {
30  dedxvec.push_back(dedx);
31  sttCounts++;
32  }
33  }
34 
35  if( sttCounts > 0) {
36  // truncated mean
37  Double_t perc = 0.70;
38  // sort
39  std::sort(dedxvec.begin(), dedxvec.end());
40 
41  //truncated mean
42  Double_t sum = 0;
43  Int_t endnum = int(floor(sttCounts * perc));
44 
45  // ****************************************
46  // CUT on n of hits: to have a meaningful
47  // truncated mean we require not to have less
48  // than 5 hits (in the already truncated list)
49  // ****************************************
50  if(endnum > 5) {
51  for(Int_t m = 0; m < endnum; m++) sum += dedxvec[m];
52  pidCand->SetSttMeanDEDX(sum/(Double_t) endnum); // else default in pidCand is SttDEDXMean = 0
53  }
54  }
55 
56  pidCand->SetSttHits(sttRawCounts);
57  return kTRUE;
58 }
59 
__m128 m
Definition: P4_F32vec4.h:28
PndTrackCandHit GetSortedHit(UInt_t i)
Definition: PndTrackCand.h:54
Bool_t GetSttInfo(PndTrack *track, PndPidCandidate *pid)
TClonesArray * fSttHit
PndDskParticle TCA //need to change to PndDskHit in future.
PndTrackCand GetTrackCand()
Definition: PndTrack.h:47
Double_t
PndMCTrack * track
Definition: anaLmdCluster.C:89
PndGeoSttPar * fSttParameters
EMC error matrix.
Double_t ComputedEdx(PndTrack *track, Double_t tuberadius)
Definition: PndSttHit.cxx:52
void SetSttMeanDEDX(Double_t val)
Double_t GetTubeInRad()
Definition: PndGeoSttPar.h:29
UInt_t GetNHits() const
Definition: PndTrackCand.h:59
ClassImp(PndAnaContFact)
Int_t GetHitId() const
Int_t GetDetId() const
void SetSttHits(Int_t val)