CbmRoot
CbmRichTrainAnnSelect.cxx
Go to the documentation of this file.
1 
9 
10 #include "CbmDrawHist.h"
11 #include "CbmMCTrack.h"
12 #include "CbmRichConverter.h"
13 #include "CbmRichHit.h"
14 #include "CbmRichRing.h"
15 #include "CbmRichRingFitterCOP.h"
16 #include "CbmRichRingSelectImpl.h"
17 #include "CbmTrackMatchNew.h"
18 #include "FairRootManager.h"
19 
20 #include "TCanvas.h"
21 #include "TClonesArray.h"
22 #include "TH1D.h"
23 #include "TMultiLayerPerceptron.h"
24 
25 #include <boost/assign/list_of.hpp>
26 
27 #include <iostream>
28 #include <sstream>
29 #include <vector>
30 
31 using boost::assign::list_of;
32 using std::cout;
33 using std::endl;
34 using std::string;
35 using std::vector;
36 
38  : fRichRings(NULL)
39  , fMcTracks(NULL)
40  , fRichRingMatches(NULL)
41  ,
42 
43  fEventNumber(0)
44  , fQuota(0.6)
45  , fMaxNofTrainSamples(5000)
46  , fNofFakeLikeTrue(0)
47  , fNofTrueLikeFake(0)
48  , fAnnCut(-0.5)
49  ,
50 
51  fhNofHits()
52  , fhAngle()
53  , fhNofHitsOnRing()
54  , fhChi2()
55  , fhRadPos()
56  , fhRadius()
57  ,
58 
59  fhAnnOutput()
60  , fhCumProb()
61  ,
62 
63  fRSParams()
64  ,
65 
66  fFitCOP(NULL)
67  , fSelectImpl(NULL)
68  ,
69 
70  fHists() {
71  fhNofHits.resize(2);
72  fhAngle.resize(2);
73  fhNofHitsOnRing.resize(2);
74  fhChi2.resize(2);
75  fhRadPos.resize(2);
76  fhRadius.resize(2);
77  fhAnnOutput.resize(2);
78  fhCumProb.resize(2);
79  string ss;
80  for (int i = 0; i < 2; i++) {
81  if (i == 0) ss = "True";
82  if (i == 1) ss = "Fake";
83  // Difference Fake and True rings histograms BEGIN
84  fhNofHits[i] = new TH1D(string("fhNofHits" + ss).c_str(),
85  "Number of hits in ring;Nof hits in ring;Counter",
86  50,
87  0,
88  50);
89  fHists.push_back(fhNofHits[i]);
90  fhAngle[i] = new TH1D(string("fhAngle" + ss).c_str(),
91  "Biggest angle in ring;Angle [rad];Counter",
92  50,
93  0,
94  6.5);
95  fHists.push_back(fhAngle[i]);
97  new TH1D(string("fhNofHitsOnRing" + ss).c_str(),
98  "Number of hits on ring;Nof hits on ring;Counter",
99  50,
100  0,
101  50);
102  fHists.push_back(fhNofHitsOnRing[i]);
103  fhChi2[i] = new TH1D(
104  string("fhFakeChi2" + ss).c_str(), "Chi2;Chi2;Counter", 100, 0., 1.0);
105  fHists.push_back(fhChi2[i]);
106  fhRadPos[i] = new TH1D(string("fhRadPos" + ss).c_str(),
107  "Radial position;Radial position [cm];Counter",
108  150,
109  0,
110  150);
111  fHists.push_back(fhRadPos[i]);
112  fhRadius[i] = new TH1D(string("fhRadius" + ss).c_str(),
113  "Radius;Radius [cm];Counter",
114  80,
115  0.,
116  9.);
117  fHists.push_back(fhRadius[i]);
118  // ANN outputs
119  fhAnnOutput[i] = new TH1D(string("fhAnnOutput" + ss).c_str(),
120  "ANN output;ANN output;Counter",
121  100,
122  -1.2,
123  1.2);
124  fHists.push_back(fhAnnOutput[i]);
125  fhCumProb[i] = new TH1D(string("fhCumProb" + ss).c_str(),
126  "ANN output;ANN output;Cumulative probability",
127  100,
128  -1.2,
129  1.2);
130  fHists.push_back(fhCumProb[i]);
131  }
132 
133  fRSParams.resize(2);
134 }
135 
137 
139  cout << "InitStatus CbmRichTrainAnnSelect::Init()" << endl;
140  FairRootManager* ioman = FairRootManager::Instance();
141  if (NULL == ioman) {
142  Fatal("CbmRichRingQa::Init", "CbmRootManager is not instantiated");
143  }
144 
145  fRichRings = (TClonesArray*) ioman->GetObject("RichRing");
146  if (NULL == fRichRings) {
147  Fatal("CbmRichTrainAnnSelect::Init", "No RichRing array!");
148  }
149 
150  fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack");
151  if (NULL == fMcTracks) {
152  Fatal("CbmRichTrainAnnSelect::Init", "No MCTrack array!");
153  }
154 
155  fRichRingMatches = (TClonesArray*) ioman->GetObject("RichRingMatch");
156  if (NULL == fRichRingMatches) {
157  Fatal("CbmRichTrainAnnSelect::Init", "No RichRingMatch array!");
158  }
159 
163 
164  return kSUCCESS;
165 }
166 
167 void CbmRichTrainAnnSelect::Exec(Option_t* /*option*/) {
168  fEventNumber++;
169  cout << "CbmRichRingQa Event No. " << fEventNumber << endl;
170 
171  SetRecFlag();
173 
174  cout << "nof trues = " << fRSParams[0].size() << endl;
175  cout << "nof fakes = " << fRSParams[1].size() << endl;
176 }
177 
179  Int_t nMatches = fRichRingMatches->GetEntriesFast();
180  vector<Int_t> clone;
181  clone.clear();
182 
183  for (Int_t iMatches = 0; iMatches < nMatches; iMatches++) {
184  CbmTrackMatchNew* match =
185  (CbmTrackMatchNew*) fRichRingMatches->At(iMatches);
186  if (NULL == match) continue;
187 
188  CbmRichRing* ring = (CbmRichRing*) fRichRings->At(iMatches);
189  if (NULL == ring) continue;
190 
191  Double_t lPercTrue = match->GetTrueOverAllHitsRatio();
192 
193  Int_t trackID = match->GetMatchedLink().GetIndex();
194  if (trackID > fMcTracks->GetEntriesFast() || trackID < 0) continue;
195  CbmMCTrack* track = (CbmMCTrack*) fMcTracks->At(trackID);
196  if (NULL == track) continue;
197 
198  Int_t gcode = TMath::Abs(track->GetPdgCode());
199  //Double_t momentum = track->GetP();
200  Int_t motherId = track->GetMotherId();
201 
202  ring->SetRecFlag(-1);
203 
204  if (lPercTrue < fQuota) { // fake ring
205  ring->SetRecFlag(1);
206  } else { // true rings
207  if (gcode == 11 && motherId == -1) { // select primary electrons
208  ring->SetRecFlag(3);
209  }
210  }
211  } // iMatches
212 }
213 
215  Int_t nMatches = fRichRingMatches->GetEntriesFast();
216 
217  for (Int_t iMatches = 0; iMatches < nMatches; iMatches++) {
218  CbmTrackMatchNew* match =
219  (CbmTrackMatchNew*) fRichRingMatches->At(iMatches);
220  if (NULL == match) continue;
221 
222  CbmRichRing* ring = (CbmRichRing*) fRichRings->At(iMatches);
223  if (NULL == ring) continue;
224 
225  CbmRichRingLight ringLight;
226  CbmRichConverter::CopyHitsToRingLight(ring, &ringLight);
227  fFitCOP->DoFit(&ringLight);
228 
229  Int_t recFlag = ring->GetRecFlag();
230  Double_t angle = fSelectImpl->GetAngle(&ringLight);
231  Int_t hitsOnRing = fSelectImpl->GetNofHitsOnRingCircle(&ringLight);
232  Double_t chi2 = ringLight.GetChi2() / ringLight.GetNofHits();
233  Int_t nHits = ringLight.GetNofHits();
234  Double_t radPos = ringLight.GetRadialPosition();
235  Double_t radius = ringLight.GetRadius();
236 
237  RingSelectParam p;
238  p.fAngle = angle;
239  p.fChi2 = chi2;
240  p.fHitsOnRing = hitsOnRing;
241  p.fNofHits = nHits;
242  p.fRadPos = radPos;
243  p.fRadius = radius;
244 
245  if (recFlag == 1) {
246  fhNofHits[1]->Fill(nHits);
247  fhAngle[1]->Fill(angle);
248  fhNofHitsOnRing[1]->Fill(hitsOnRing);
249  fhRadPos[1]->Fill(radPos);
250  fhRadius[1]->Fill(radius);
251  fhChi2[1]->Fill(chi2);
252  fRSParams[1].push_back(p);
253  }
254 
255  if (recFlag == 3) {
256  fhNofHits[0]->Fill(nHits);
257  fhAngle[0]->Fill(angle);
258  fhNofHitsOnRing[0]->Fill(hitsOnRing);
259  fhRadPos[0]->Fill(radPos);
260  fhRadius[0]->Fill(radius);
261  fhChi2[0]->Fill(chi2);
262  fRSParams[0].push_back(p);
263  }
264  } // iMatches
265 }
266 
268  TTree* simu = new TTree("MonteCarlo", "MontecarloData");
269  Double_t x[6];
270  Double_t xOut;
271 
272  simu->Branch("x0", &x[0], "x0/D");
273  simu->Branch("x1", &x[1], "x1/D");
274  simu->Branch("x2", &x[2], "x2/D");
275  simu->Branch("x3", &x[3], "x3/D");
276  simu->Branch("x4", &x[4], "x4/D");
277  simu->Branch("x5", &x[5], "x5/D");
278  simu->Branch("xOut", &xOut, "xOut/D");
279 
280  for (int j = 0; j < 2; j++) {
281  for (unsigned int i = 0; i < fRSParams[j].size(); i++) {
282  x[0] = fRSParams[j][i].fNofHits / 45.;
283  x[1] = fRSParams[j][i].fAngle / 6.28;
284  x[2] = fRSParams[j][i].fHitsOnRing / 45.;
285  x[3] = fRSParams[j][i].fRadPos / 110.;
286  x[4] = fRSParams[j][i].fRadius / 10.;
287  x[5] = fRSParams[j][i].fChi2 / 0.4;
288 
289  for (int k = 0; k < 6; k++) {
290  if (x[k] < 0.) x[k] = 0.;
291  if (x[k] > 1.) x[k] = 1.;
292  }
293 
294  if (j == 0) xOut = 1.;
295  if (j == 1) xOut = -1.;
296  simu->Fill();
297  if (i >= fMaxNofTrainSamples) break;
298  }
299  }
300 
301  TMultiLayerPerceptron network("x0,x1,x2,x3,x4,x5:10:xOut", simu, "Entry$+1");
302  //network.LoadWeights("/u/slebedev/JUL09/trunk/parameters/rich/NeuralNet_RingSelection_Weights_Compact.txt");
303  network.Train(300, "text,update=10");
304  network.DumpWeights("rich_v17a_select_ann_weights.txt");
305  //network.Export();
306 
307  Double_t params[6];
308 
309  fNofFakeLikeTrue = 0;
310  fNofTrueLikeFake = 0;
311 
312  for (int j = 0; j < 2; j++) {
313  for (unsigned int i = 0; i < fRSParams[j].size(); i++) {
314  params[0] = fRSParams[j][i].fNofHits / 45.;
315  params[1] = fRSParams[j][i].fAngle / 6.28;
316  params[2] = fRSParams[j][i].fHitsOnRing / 45.;
317  params[3] = fRSParams[j][i].fRadPos / 110.;
318  params[4] = fRSParams[j][i].fRadius / 10.;
319  params[5] = fRSParams[j][i].fChi2 / 0.4;
320 
321  for (int k = 0; k < 6; k++) {
322  if (params[k] < 0.) params[k] = 0.;
323  if (params[k] > 1.) params[k] = 1.;
324  }
325 
326  Double_t netEval = network.Evaluate(0, params);
327 
328  //if (netEval > maxEval) netEval = maxEval - 0.01;
329  // if (netEval < minEval) netEval = minEval + 0.01;
330 
331  fhAnnOutput[j]->Fill(netEval);
332  if (netEval >= fAnnCut && j == 1) fNofFakeLikeTrue++;
333  if (netEval < fAnnCut && j == 0) fNofTrueLikeFake++;
334  }
335  }
336 }
337 
339  cout << "nof Trues = " << fRSParams[0].size() << endl;
340  cout << "nof Fakes = " << fRSParams[1].size() << endl;
341  cout << "Fake like True = " << fNofFakeLikeTrue
342  << ", fake remain = " << (double) fNofFakeLikeTrue / fRSParams[1].size()
343  << endl;
344  cout << "True like Fake = " << fNofTrueLikeFake
345  << ", true loss = " << (double) fNofTrueLikeFake / fRSParams[0].size()
346  << endl;
347  cout << "ANN cut = " << fAnnCut << endl;
348 
349  Double_t cumProbFake = 0.;
350  Double_t cumProbTrue = 0.;
351  Int_t nofFake = (Int_t) fhAnnOutput[1]->GetEntries();
352  Int_t nofTrue = (Int_t) fhAnnOutput[0]->GetEntries();
353  for (Int_t i = 1; i <= fhAnnOutput[1]->GetNbinsX(); i++) {
354  cumProbFake += fhAnnOutput[1]->GetBinContent(i);
355  fhCumProb[1]->SetBinContent(i, (Double_t) cumProbFake / nofFake);
356 
357  cumProbTrue += fhAnnOutput[0]->GetBinContent(i);
358  fhCumProb[0]->SetBinContent(i, 1. - (Double_t) cumProbTrue / nofTrue);
359  }
360 
361  // TCanvas* c1 = new TCanvas("ann_select_ann_output", "ann_select_ann_output", 500, 500);
362  new TCanvas("ann_select_ann_output", "ann_select_ann_output", 500, 500);
363  fhAnnOutput[0]->Scale(1. / fhAnnOutput[0]->Integral());
364  fhAnnOutput[1]->Scale(1. / fhAnnOutput[1]->Integral());
365  DrawH1(list_of(fhAnnOutput[0])(fhAnnOutput[1]),
366  list_of("True")("Fake"),
367  kLinear,
368  kLog,
369  true,
370  0.8,
371  0.8,
372  0.99,
373  0.99);
374 
375  // TCanvas* c2 = new TCanvas("ann_select_cum_prob", "ann_select_cum_prob", 500, 500);
376  new TCanvas("ann_select_cum_prob", "ann_select_cum_prob", 500, 500);
377  DrawH1(list_of(fhCumProb[0])(fhCumProb[1]),
378  list_of("True")("Fake"),
379  kLinear,
380  kLinear,
381  true,
382  0.8,
383  0.8,
384  0.99,
385  0.99);
386 
387  TCanvas* c3 = new TCanvas("ann_select_params", "ann_select_params", 900, 600);
388  c3->Divide(3, 2);
389  c3->cd(1);
390  DrawH1(list_of(fhNofHits[0])(fhNofHits[1]),
391  list_of("True")("Fake"),
392  kLinear,
393  kLog,
394  true,
395  0.8,
396  0.8,
397  0.99,
398  0.99);
399  c3->cd(2);
400  DrawH1(list_of(fhAngle[0])(fhAngle[1]),
401  list_of("True")("Fake"),
402  kLinear,
403  kLog,
404  true,
405  0.8,
406  0.8,
407  0.99,
408  0.99);
409  c3->cd(3);
410  DrawH1(list_of(fhNofHitsOnRing[0])(fhNofHitsOnRing[1]),
411  list_of("True")("Fake"),
412  kLinear,
413  kLog,
414  true,
415  0.8,
416  0.8,
417  0.99,
418  0.99);
419  c3->cd(4);
420  DrawH1(list_of(fhRadPos[0])(fhRadPos[1]),
421  list_of("True")("Fake"),
422  kLinear,
423  kLog,
424  true,
425  0.8,
426  0.8,
427  0.99,
428  0.99);
429  c3->cd(5);
430  DrawH1(list_of(fhChi2[0])(fhChi2[1]),
431  list_of("True")("Fake"),
432  kLinear,
433  kLog,
434  true,
435  0.8,
436  0.8,
437  0.99,
438  0.99);
439  c3->cd(6);
440  DrawH1(list_of(fhRadius[0])(fhRadius[1]),
441  list_of("True")("Fake"),
442  kLinear,
443  kLog,
444  true,
445  0.8,
446  0.8,
447  0.99,
448  0.99);
449 }
450 
452  TrainAndTestAnn();
453  Draw();
454  for (unsigned int i = 0; i < fHists.size(); i++) {
455  fHists[i]->Scale(1. / fHists[i]->Integral());
456  }
457 
458  TDirectory* current = gDirectory;
459  TDirectory* rich = current->mkdir("CbmRichTrainAnnSelect");
460  rich->cd();
461 
462  for (unsigned int i = 0; i < fHists.size(); i++) {
463  fHists[i]->Write();
464  }
465 
466  rich->cd();
467  current->cd();
468 
469  delete fFitCOP;
470  delete fSelectImpl;
471 }
472 
CbmRichTrainAnnSelect::fhAngle
vector< TH1D * > fhAngle
Definition: CbmRichTrainAnnSelect.h:94
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmMatch::GetMatchedLink
const CbmLink & GetMatchedLink() const
Definition: CbmMatch.h:37
CbmRichTrainAnnSelect::fhCumProb
vector< TH1D * > fhCumProb
Definition: CbmRichTrainAnnSelect.h:103
RingSelectParam::fAngle
Double_t fAngle
Definition: CbmRichTrainAnnSelect.h:37
RingSelectParam::fChi2
Double_t fChi2
Definition: CbmRichTrainAnnSelect.h:40
CbmRichTrainAnnSelect
Train ANN for fake rejection.
Definition: CbmRichTrainAnnSelect.h:52
CbmTrackMatchNew::GetTrueOverAllHitsRatio
Double_t GetTrueOverAllHitsRatio() const
Definition: CbmTrackMatchNew.h:35
CbmRichRingLight::GetChi2
float GetChi2() const
Definition: CbmRichRingLight.h:242
CbmRichTrainAnnSelect::fhChi2
vector< TH1D * > fhChi2
Definition: CbmRichTrainAnnSelect.h:96
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
RingSelectParam::fNofHits
Double_t fNofHits
Definition: CbmRichTrainAnnSelect.h:36
CbmRichRingSelectImpl::GetAngle
float GetAngle(CbmRichRingLight *ring)
Definition: CbmRichRingSelectImpl.h:67
CbmRichTrainAnnSelect::Init
virtual InitStatus Init()
Inherited from FairTask.
Definition: CbmRichTrainAnnSelect.cxx:138
CbmRichRing::GetRecFlag
Int_t GetRecFlag() const
Definition: CbmRichRing.h:101
CbmRichTrainAnnSelect::Exec
virtual void Exec(Option_t *option)
Inherited from FairTask.
Definition: CbmRichTrainAnnSelect.cxx:167
CbmRichRing
Definition: CbmRichRing.h:17
CbmRichTrainAnnSelect::fhAnnOutput
vector< TH1D * > fhAnnOutput
Definition: CbmRichTrainAnnSelect.h:102
CbmRichRing.h
CbmRichTrainAnnSelect::fMcTracks
TClonesArray * fMcTracks
Definition: CbmRichTrainAnnSelect.h:81
CbmDrawHist.h
Helper functions for drawing 1D and 2D histograms and graphs.
RingSelectParam::fRadPos
Double_t fRadPos
Definition: CbmRichTrainAnnSelect.h:39
CbmRichRingLight::GetRadialPosition
float GetRadialPosition() const
Return radial position of the ring.
Definition: CbmRichRingLight.h:247
CbmRichRingFitterCOP
Here the ring is fitted with the COP algorithm from A. Ayriyan/G. Ososkov.
Definition: CbmRichRingFitterCOP.h:28
CbmRichTrainAnnSelect::fMaxNofTrainSamples
UInt_t fMaxNofTrainSamples
Definition: CbmRichTrainAnnSelect.h:86
CbmRichTrainAnnSelect::DiffFakeTrueCircle
void DiffFakeTrueCircle()
Fill ring selection parameters in array and histograms.
Definition: CbmRichTrainAnnSelect.cxx:214
DrawH1
void DrawH1(TH1 *hist, HistScale logx, HistScale logy, const string &drawOpt, Int_t color, Int_t lineWidth, Int_t lineStyle, Int_t markerSize, Int_t markerStyle)
Definition: CbmDrawHist.cxx:49
CbmRichRingLight::GetNofHits
int GetNofHits() const
Return number of hits in ring.
Definition: CbmRichRingLight.h:108
CbmRichTrainAnnSelect::fhNofHits
vector< TH1D * > fhNofHits
Definition: CbmRichTrainAnnSelect.h:93
CbmRichTrainAnnSelect::CbmRichTrainAnnSelect
CbmRichTrainAnnSelect()
Default constructor.
Definition: CbmRichTrainAnnSelect.cxx:37
RingSelectParam
Input Parameters for ANN.
Definition: CbmRichTrainAnnSelect.h:34
CbmRichTrainAnnSelect::fRichRingMatches
TClonesArray * fRichRingMatches
Definition: CbmRichTrainAnnSelect.h:82
CbmRichConverter.h
Convert internal data classes to cbmroot common data classes.
CbmRichTrainAnnSelect::~CbmRichTrainAnnSelect
virtual ~CbmRichTrainAnnSelect()
Destructor.
Definition: CbmRichTrainAnnSelect.cxx:136
CbmRichRingSelectImpl
Definition: CbmRichRingSelectImpl.h:28
CbmRichTrainAnnSelect::fSelectImpl
CbmRichRingSelectImpl * fSelectImpl
Definition: CbmRichTrainAnnSelect.h:110
kLinear
@ kLinear
Definition: CbmDrawHist.h:79
CbmTrackMatchNew.h
CbmRichTrainAnnSelect::fHists
vector< TH1 * > fHists
Definition: CbmRichTrainAnnSelect.h:112
CbmRichTrainAnnSelect::SetRecFlag
void SetRecFlag()
Set recFlag weather ring was found correctly or not.
Definition: CbmRichTrainAnnSelect.cxx:178
CbmRichRingSelectImpl.h
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmRichTrainAnnSelect::fRichRings
TClonesArray * fRichRings
Definition: CbmRichTrainAnnSelect.h:80
RingSelectParam::fHitsOnRing
Double_t fHitsOnRing
Definition: CbmRichTrainAnnSelect.h:38
CbmRichRingFitterCOP.h
Here the ring is fitted with the COP algorithm from A. Ayriyan/G. Ososkov.
CbmRichRingLight::GetRadius
float GetRadius() const
Definition: CbmRichRingLight.h:161
CbmRichConverter::Init
static void Init()
Initialize array of RICH hits.
Definition: CbmRichConverter.h:93
CbmRichTrainAnnSelect::fhRadPos
vector< TH1D * > fhRadPos
Definition: CbmRichTrainAnnSelect.h:97
CbmRichRingFitterCOP::DoFit
virtual void DoFit(CbmRichRingLight *ring)
Inherited from CbmRichRingFitterBase.
Definition: CbmRichRingFitterCOP.cxx:19
CbmMCTrack.h
CbmMCTrack
Definition: CbmMCTrack.h:34
x
Double_t x
Definition: CbmMvdSensorDigiToHitTask.cxx:68
CbmRichTrainAnnSelect::FinishTask
virtual void FinishTask()
Inherited from FairTask.
Definition: CbmRichTrainAnnSelect.cxx:451
CbmRichTrainAnnSelect::Draw
void Draw(Option_t *="")
Draw results.
Definition: CbmRichTrainAnnSelect.cxx:338
CbmRichConverter::CopyHitsToRingLight
static void CopyHitsToRingLight(const CbmRichRing *ring1, CbmRichRingLight *ring2)
Copy hits from CbmRichRing to CbmRichRingLight.
Definition: CbmRichConverter.h:41
CbmRichTrainAnnSelect::fhRadius
vector< TH1D * > fhRadius
Definition: CbmRichTrainAnnSelect.h:98
CbmRichTrainAnnSelect::fhNofHitsOnRing
vector< TH1D * > fhNofHitsOnRing
Definition: CbmRichTrainAnnSelect.h:95
CbmRichTrainAnnSelect::fFitCOP
CbmRichRingFitterCOP * fFitCOP
Definition: CbmRichTrainAnnSelect.h:109
CbmRichTrainAnnSelect::fQuota
Double_t fQuota
Definition: CbmRichTrainAnnSelect.h:85
CbmTrackMatchNew
Definition: CbmTrackMatchNew.h:19
CbmRichTrainAnnSelect.h
Train ANN for fake rejection.
CbmRichRingSelectImpl::GetNofHitsOnRingCircle
int GetNofHitsOnRingCircle(CbmRichRingLight *ring)
Definition: CbmRichRingSelectImpl.h:50
CbmRichTrainAnnSelect::fRSParams
vector< vector< RingSelectParam > > fRSParams
Definition: CbmRichTrainAnnSelect.h:107
CbmRichHit.h
CbmRichRing::SetRecFlag
void SetRecFlag(Int_t recflag)
Definition: CbmRichRing.h:65
CbmRichTrainAnnSelect::fAnnCut
Double_t fAnnCut
Definition: CbmRichTrainAnnSelect.h:89
CbmRichTrainAnnSelect::fNofFakeLikeTrue
Int_t fNofFakeLikeTrue
Definition: CbmRichTrainAnnSelect.h:87
CbmRichRingLight
Definition: CbmRichRingLight.h:39
RingSelectParam::fRadius
Double_t fRadius
Definition: CbmRichTrainAnnSelect.h:41
kLog
@ kLog
Definition: CbmDrawHist.h:78
CbmRichTrainAnnSelect::TrainAndTestAnn
void TrainAndTestAnn()
Train and test ANN.
Definition: CbmRichTrainAnnSelect.cxx:267
CbmRichTrainAnnSelect::fEventNumber
Int_t fEventNumber
Definition: CbmRichTrainAnnSelect.h:84
CbmRichTrainAnnSelect::fNofTrueLikeFake
Int_t fNofTrueLikeFake
Definition: CbmRichTrainAnnSelect.h:88