10#include "TMultiLayerPerceptron.h"
22 fAnnWeights = string(gSystem->Getenv(
"VMCWORKDIR")) +
"/parameters/rich/rich_v17a_select_ann_weights.txt";
25 fAnnWeights = string(gSystem->Getenv(
"VMCWORKDIR")) +
"/parameters/rich/rich_v16a_select_ann_weights.txt";
28 fAnnWeights = string(gSystem->Getenv(
"VMCWORKDIR")) +
"/parameters/rich/rich_v17a_select_ann_weights.txt";
38 TTree* simu =
new TTree(
"MonteCarlo",
"MontecarloData");
42 simu->Branch(
"x0", &
x[0],
"x0/D");
43 simu->Branch(
"x1", &
x[1],
"x1/D");
44 simu->Branch(
"x2", &
x[2],
"x2/D");
45 simu->Branch(
"x3", &
x[3],
"x3/D");
46 simu->Branch(
"x4", &
x[4],
"x4/D");
47 simu->Branch(
"x5", &
x[5],
"x5/D");
48 simu->Branch(
"xOut", &xOut,
"xOut/D");
50 fNN =
new TMultiLayerPerceptron(
"x0,x1,x2,x3,x4,x5:10:xOut", simu);
51 cout <<
"-I- CbmRichRingSelectAnn: get ANN weight parameters from: " <<
fAnnWeights << endl;
83 float nnEval =
fNN->Evaluate(0, params);
@ CbmRichGeometryTypeTwoWings
@ CbmRichGeometryTypeCylindrical
Implementation for concrete RICH ring selection algorithm: reject rings using a trained neural net (i...
static CbmRichGeoManager & GetInstance()
void SetAngle(float angle)
void SetSelectionNN(float selectionNN)
void SetNofHitsOnRing(unsigned short onring)
int GetNofHits() const
Return number of hits in ring.
float GetRadialPosition() const
Return radial position of the ring.
unsigned short GetNofHitsOnRing() const
TMultiLayerPerceptron * fNN
void DoSelect(CbmRichRingLight *ring)
CbmRichRingSelectAnn()
Standard constructor.
virtual ~CbmRichRingSelectAnn()
Destructor.
virtual void Init()
Initialize ANN.
CbmRichRingSelectImpl * fSelectImpl
int GetNofHitsOnRingCircle(CbmRichRingLight *ring)
float GetAngle(CbmRichRingLight *ring)