FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndLmdSigCleanTask Class Reference

#include <PndLmdSigCleanTask.h>

Inheritance diagram for PndLmdSigCleanTask:

Public Member Functions

 PndLmdSigCleanTask ()
 
 PndLmdSigCleanTask (Double_t pBeam, TString dir)
 Set up beam momuntum value. More...
 
 ~PndLmdSigCleanTask ()
 
virtual void SetParContainers ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
virtual void Finish ()
 
bool CheckMVA (FairTrackParH *fTrk)
 
bool CheckMom (double prec)
 
bool Check (FairTrackParH *fTrk)
 
void SetXY (bool setXY)
 
bool CheckXY (FairTrackParP *fTrk)
 
void SetDX (double dx)
 
void SetDY (double dy)
 

Private Member Functions

 ClassDef (PndLmdSigCleanTask, 2)
 

Private Attributes

TClonesArray * fTrackParFinal
 
PndGeoHandlingfGeoH
 
int fEventNr
 
Double_t fPbeam
 
bool fXYcut
 
TClonesArray * fRecBPTracks
 
TClonesArray * fTrkArray
 
TString fdir
 
TString fmethodName
 
Float_t axrec
 
Float_t ayrec
 
Float_t aprec
 
Float_t azrec
 
Float_t athrec
 
Float_t aphrec
 
TMVA::Reader * reader
 
double fdX
 
double fdY
 
TH1 * hResponse
 

Detailed Description

Definition at line 37 of file PndLmdSigCleanTask.h.

Constructor & Destructor Documentation

PndLmdSigCleanTask::PndLmdSigCleanTask ( )

Default constructor

Definition at line 36 of file PndLmdSigCleanTask.cxx.

37  : FairTask("Cleaning Tracks Task for PANDA Lmd"),
38  fEventNr(0),
39  fdX(0),
40  fdY(0) {
41  // tprop = new TNtuple();
42 }
PndLmdSigCleanTask::PndLmdSigCleanTask ( Double_t  pBeam,
TString  dir 
)

Set up beam momuntum value.

Definition at line 45 of file PndLmdSigCleanTask.cxx.

References fdir, fPbeam, fXYcut, and hResponse.

46  : FairTask("Cleaning Tracks Task for PANDA Lmd"),
47  fEventNr(0),
48  fdX(0),
49  fdY(0) {
50  fdir = dir;
51  fPbeam = pBeam;
52  cout << "Beam Momentum in this run is " << fPbeam << endl;
53  hResponse = new TH1D("hResponse", "", 1e3, -1, 1);
54  fXYcut = false;
55 }
PndLmdSigCleanTask::~PndLmdSigCleanTask ( )

Destructor

Definition at line 58 of file PndLmdSigCleanTask.cxx.

58 {}

Member Function Documentation

bool PndLmdSigCleanTask::Check ( FairTrackParH *  fTrk)

Definition at line 174 of file PndLmdSigCleanTask.cxx.

References CheckMom(), CheckMVA(), fabs(), fPbeam, and res.

Referenced by Exec().

175  { // answer TRUE means "it's a signal"
176  bool res;
177  if (fabs(fPbeam - 1.5) < 1e-1)
178  res = CheckMVA(fTrk); // MVA was trained only on sample with 1.5 GeV/c
179  // simulation ///TODO: extension to other energies?
180  else {
181  TVector3 MomRecBP = fTrk->GetMomentum();
182  double prec = MomRecBP.Mag();
183  res = CheckMom(prec);
184  }
185  return res;
186 }
Int_t res
Definition: anadigi.C:166
bool CheckMom(double prec)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
bool CheckMVA(FairTrackParH *fTrk)
bool PndLmdSigCleanTask::CheckMom ( double  prec)

Definition at line 188 of file PndLmdSigCleanTask.cxx.

References fPbeam, and res.

Referenced by Check().

188  {
189  bool res;
190  if (abs(prec - fPbeam) > 3e-4)
191  res = false;
192  else
193  res = true;
194  return res;
195 }
Int_t res
Definition: anadigi.C:166
bool PndLmdSigCleanTask::CheckMVA ( FairTrackParH *  fTrk)

Definition at line 197 of file PndLmdSigCleanTask.cxx.

References aphrec, aprec, athrec, axrec, ayrec, azrec, Double_t, fdX, fdY, fmethodName, hResponse, Pi, reader, and res.

Referenced by Check().

197  {
198  // cout<<"Yes, TMVA game!"<<endl;
199  bool res;
200  TVector3 PosRecBP = fTrk->GetPosition();
201  axrec = float(PosRecBP.X() - fdX);
202  ayrec = float(PosRecBP.Y() - fdY);
203  azrec = float(PosRecBP.Z());
204  TVector3 MomRecBP = fTrk->GetMomentum();
205  aprec = float(MomRecBP.Mag());
206  Double_t lyambda = fTrk->GetLambda();
207  athrec = float(TMath::Pi() / 2. - lyambda);
208  aphrec = float(fTrk->GetPhi());
209  double mva_response = reader->EvaluateMVA(fmethodName);
210  hResponse->Fill(mva_response);
211  // if(mva_response>-0.0599) res=true; //BDT
212 
213  // if(mva_response<-0.0411){//new training for non-point-like beam
214  // [28/04/2014]
215  // if(mva_response<0.0947){//new training for non-point-like beam [28/04/2014]
216  if (mva_response <
217  -0.5) { // new training for non-point-like beam [28/09/2014]
218  // if(mva_response<0){
219  // if(mva_response<-0.1452){
220  // if(mva_response<-0.156){
221  // if(mva_response<-0.01){
222  res = false; // BDT //TEST
223  // cout<<"BDT="<<mva_response<<" for PCA:("<<axrec<<", "<<ayrec<<",
224  // "<<azrec<<") athrec = "<<1e3*athrec<<" aprec = "<<aprec<<endl;
225  } else
226  res = true;
227  return res;
228 }
Int_t res
Definition: anadigi.C:166
Double_t
TMVA::Reader * reader
Double_t Pi
bool PndLmdSigCleanTask::CheckXY ( FairTrackParP *  fTrk)

Definition at line 230 of file PndLmdSigCleanTask.cxx.

References diffX, diffY, fdX, fdY, fVerbose, and res.

Referenced by Exec().

230  {
231  TVector3 MomRecLMD(fFittedTrkP->GetPx(), fFittedTrkP->GetPy(),
232  fFittedTrkP->GetPz());
233  MomRecLMD *= 1. / MomRecLMD.Mag();
234  bool dirOKx = true;
235  bool dirOKy = true;
236  if (fVerbose > 0) cout << "!XThFilt!" << endl;
237  double Xref = -19.1 + 1.12 * 1e3 * MomRecLMD.Theta() + fdX;
238  double diffX = abs(fFittedTrkP->GetX() - Xref);
239  if (fVerbose > 0)
240  cout << "fFittedTrkP.GetX() = " << fFittedTrkP->GetX() << " Xref = " << Xref
241  << " diffX = " << diffX << endl;
242  if (diffX > 3.0) dirOKx = false;
243  if (fVerbose > 0) cout << "!YPhFilt!" << endl;
244  double Yref = -0.00651 + 0.045 * 1e3 * MomRecLMD.Phi() + fdY;
245  double diffY = abs(fFittedTrkP->GetY() - Yref);
246  if (fVerbose > 0)
247  cout << "fFittedTrkP.GetY() = " << fFittedTrkP->GetY() << " Yref = " << Yref
248  << " diffY = " << diffY << endl;
249  if (diffY > 4.0) dirOKy = false;
250 
251  bool res = false;
252  if (dirOKx && dirOKy) res = true;
253  return res;
254 }
int fVerbose
Definition: poormantracks.C:24
Int_t res
Definition: anadigi.C:166
double diffX
Definition: anaLmdReco.C:76
double diffY
Definition: anaLmdReco.C:76
PndLmdSigCleanTask::ClassDef ( PndLmdSigCleanTask  ,
 
)
private
void PndLmdSigCleanTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 132 of file PndLmdSigCleanTask.cxx.

References Check(), CheckXY(), fEventNr, fRecBPTracks, fTrackParFinal, fTrkArray, fVerbose, fXYcut, and PndTrack::GetParamFirst().

132  {
133  std::map<int, std::vector<int> > mcHitMap; // Track -> MCHits
134  fTrackParFinal->Delete();
135 
136  if (fVerbose > 2) {
137  cout << " ---- Info: " << fEventNr << endl;
138  }
139  fEventNr++;
140 
141  // go through all tracks
142  const int nGeaneTrks = fRecBPTracks->GetEntriesFast();
143  Int_t counterSigTrk = 0;
144  for (Int_t iN = 0; iN < nGeaneTrks;
145  iN++) { // loop over all reconstructed trks
146  FairTrackParH* fRes = (FairTrackParH*)fRecBPTracks->At(iN);
147  // 1. Trk params before BP
148  bool isCleanCand;
149  if (fXYcut == kTRUE) {
150  PndTrack* trkpnd = (PndTrack*)(fTrkArray->At(iN));
151  FairTrackParP fFittedTrkP = trkpnd->GetParamFirst();
152  isCleanCand = CheckXY(&fFittedTrkP);
153  } else {
154  isCleanCand = kTRUE;
155  }
156  // 2. Trk params after BP
157  bool isClean = Check(fRes);
158  if (isClean == kTRUE && isCleanCand == kTRUE) {
159  new ((*fTrackParFinal)[counterSigTrk])
160  FairTrackParH(*(fRes)); // save Track
161  counterSigTrk++;
162  if (fVerbose > 2) cout << "***** isClean TRUE *****" << endl;
163  } else {
164  new ((*fTrackParFinal)[counterSigTrk]) FairTrackParH(); // save NULL
165  counterSigTrk++;
166  if (fVerbose > 2) cout << "***** isClean FALSE *****" << endl;
167  }
168  } // [END] loop over all reconstructed trks
169  if (fVerbose > 2) cout << "PndLmdSigCleanTask::Exec END!" << endl;
170 }
int fVerbose
Definition: poormantracks.C:24
TClonesArray * fRecBPTracks
bool CheckXY(FairTrackParP *fTrk)
bool Check(FairTrackParH *fTrk)
TClonesArray * fTrackParFinal
TClonesArray * fTrkArray
FairTrackParP GetParamFirst()
Definition: PndTrack.h:49
void PndLmdSigCleanTask::Finish ( )
virtual

Definition at line 172 of file PndLmdSigCleanTask.cxx.

172 {}
InitStatus PndLmdSigCleanTask::Init ( )
virtual

Definition at line 61 of file PndLmdSigCleanTask.cxx.

References aphrec, aprec, athrec, axrec, ayrec, azrec, fabs(), fdir, fGeoH, fmethodName, fPbeam, fRecBPTracks, fTrackParFinal, fTrkArray, PndGeoHandling::Instance(), reader, and TString.

Referenced by runLumiPixel5cCombFilt().

61  {
62  // Get RootManager
63  FairRootManager* ioman = FairRootManager::Instance();
64  if (!ioman) {
65  std::cout << "-E- PndLmdSigCleanTask::Init: "
66  << "RootManager not instantiated!" << std::endl;
67  return kFATAL;
68  }
69 
70  fTrkArray = (TClonesArray*)ioman->GetObject("LMDPndTrackFilt");
71  if (!fTrkArray) {
72  std::cout << "-W- PndLmdTrkQTask::Init: "
73  << "No Track"
74  << " array!" << std::endl;
75  return kERROR;
76  }
77 
78  // Get rec.tracks after back propagation
79  fRecBPTracks = (TClonesArray*)ioman->GetObject("GeaneTrackFinal");
80  if (!fRecBPTracks) {
81  std::cout << "-W- PndLmdSigCleanTask::Init: "
82  << "No Track after back-propagation"
83  << " array!" << std::endl;
84  return kERROR;
85  }
86 
87  fTrackParFinal = new TClonesArray("FairTrackParH");
88  ioman->Register("LMDCleanTrack", "PndLmd", fTrackParFinal, kTRUE);
89 
91  // FairRun* fRun = FairRun::Instance(); //[R.K. 01/2017] unused variable?
92  // FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); //[R.K. 01/2017] unused
93  // variable
94 
95  // TMVA -----------------------------------------------------
96  // This loads the library
97  if (fabs(fPbeam - 1.5) < 1e-1) {
98  TMVA::Tools::Instance();
99 
100  // TMVA::Reader *
101  reader = new TMVA::Reader("!Color:!Silent");
102 
103  // Create a set of variables and declare them to the reader
104  // - the variable names MUST corresponds in name and type to those given in
105  // the weight file(s) used
106 
107  reader->AddVariable("axrec", &axrec);
108  reader->AddVariable("ayrec", &ayrec);
109  reader->AddVariable("azrec", &azrec);
110  reader->AddVariable("aprec", &aprec);
111  reader->AddVariable("athrec", &athrec);
112  reader->AddVariable("aphrec", &aphrec);
113 
114  // TString dir = "weights/";
115  TString prefix = "TMVAClassification";
116  fmethodName = "BDT method";
117  TString weightfile =
118  fdir + prefix + TString("_BDT") + TString(".weights.xml");
119  reader->BookMVA(fmethodName, weightfile);
120  }
121  //------------------------------------------------------
122  return kSUCCESS;
123 }
TClonesArray * fRecBPTracks
TClonesArray * fTrackParFinal
TMVA::Reader * reader
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
static PndGeoHandling * Instance()
TClonesArray * fTrkArray
PndGeoHandling * fGeoH
void PndLmdSigCleanTask::SetDX ( double  dx)
inline

Definition at line 63 of file PndLmdSigCleanTask.h.

References dx, and fdX.

Referenced by runLumiPixel5bCleanSig(), and runLumiPixel5cCombFilt().

63 { fdX = dx; }
double dx
void PndLmdSigCleanTask::SetDY ( double  dy)
inline

Definition at line 64 of file PndLmdSigCleanTask.h.

References dy, and fdY.

Referenced by runLumiPixel5bCleanSig(), and runLumiPixel5cCombFilt().

64 { fdY = dy; }
double dy
void PndLmdSigCleanTask::SetParContainers ( )
virtual

Virtual method Init

FairRun* ana = FairRun::Instance();

Definition at line 125 of file PndLmdSigCleanTask.cxx.

125  {
126  // Get Base Container
128  // FairRuntimeDb* rtdb=ana->GetRuntimeDb();
129 }
void PndLmdSigCleanTask::SetXY ( bool  setXY)
inline

Definition at line 60 of file PndLmdSigCleanTask.h.

References fXYcut.

Referenced by runLumiPixel5cCombFilt().

60 { fXYcut = setXY; };

Member Data Documentation

Float_t PndLmdSigCleanTask::aphrec
private

Definition at line 82 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Float_t PndLmdSigCleanTask::aprec
private

Definition at line 81 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Float_t PndLmdSigCleanTask::athrec
private

Definition at line 82 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Float_t PndLmdSigCleanTask::axrec
private

Definition at line 81 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Float_t PndLmdSigCleanTask::ayrec
private

Definition at line 81 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Float_t PndLmdSigCleanTask::azrec
private

Definition at line 82 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

TString PndLmdSigCleanTask::fdir
private

Definition at line 79 of file PndLmdSigCleanTask.h.

Referenced by Init(), and PndLmdSigCleanTask().

double PndLmdSigCleanTask::fdX
private

Definition at line 86 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), CheckXY(), and SetDX().

double PndLmdSigCleanTask::fdY
private

Definition at line 87 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), CheckXY(), and SetDY().

int PndLmdSigCleanTask::fEventNr
private

Definition at line 70 of file PndLmdSigCleanTask.h.

Referenced by Exec().

PndGeoHandling* PndLmdSigCleanTask::fGeoH
private

Definition at line 69 of file PndLmdSigCleanTask.h.

Referenced by Init().

TString PndLmdSigCleanTask::fmethodName
private

Definition at line 80 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().

Double_t PndLmdSigCleanTask::fPbeam
private

Definition at line 71 of file PndLmdSigCleanTask.h.

Referenced by Check(), CheckMom(), Init(), and PndLmdSigCleanTask().

TClonesArray* PndLmdSigCleanTask::fRecBPTracks
private

Definition at line 75 of file PndLmdSigCleanTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndLmdSigCleanTask::fTrackParFinal
private

Definition at line 67 of file PndLmdSigCleanTask.h.

Referenced by Exec(), and Init().

TClonesArray* PndLmdSigCleanTask::fTrkArray
private

Definition at line 76 of file PndLmdSigCleanTask.h.

Referenced by Exec(), and Init().

bool PndLmdSigCleanTask::fXYcut
private

Definition at line 72 of file PndLmdSigCleanTask.h.

Referenced by Exec(), PndLmdSigCleanTask(), and SetXY().

TH1* PndLmdSigCleanTask::hResponse
private

Definition at line 89 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and PndLmdSigCleanTask().

TMVA::Reader* PndLmdSigCleanTask::reader
private

Definition at line 83 of file PndLmdSigCleanTask.h.

Referenced by CheckMVA(), and Init().


The documentation for this class was generated from the following files: