1 #ifndef ALITRDPIDREFMAKERNN_H
2 #define ALITRDPIDREFMAKERNN_H
4 //////////////////////////////////////////////////////
6 // Task to build PID reference tree for the training
7 // of neural networs for the TRD PID
9 // Authors: Alex Wilk <wilka@uni-muenster.de>
10 // Markus Heide <mheide@uni-muenster.de>
12 ///////////////////////////////////////////////////////
14 #ifndef ALITRDRECOTASK_H
15 #include "AliTRDrecoTask.h"
22 #ifndef ALITRDCALPID_H
23 #include "../Cal/AliTRDCalPID.h"
26 #ifndef ALITRDGEOMETRY_H
27 #include "../AliTRDgeometry.h"
33 class TMultiLayerPerceptron;
36 class AliTRDReconstructor;
37 class AliTRDpidRefMakerNN : public AliTRDrecoTask
66 AliTRDpidRefMakerNN();
68 virtual ~AliTRDpidRefMakerNN();
70 void ConnectInputData(Option_t *opt);
71 void CreateOutputObjects();
72 void Exec(Option_t *option);
73 Int_t GetEpochs() {return fEpochs;};
74 Int_t GetMinTrain() {return fMinTrain;};
75 Int_t GetTrainMomBin() {return fTrainMomBin;};
79 void SetEpochs(Int_t epochs) {fEpochs = epochs;};
80 void SetMinTrain(Int_t mintrain) {fMinTrain = mintrain;};
81 void SetTrainMomBin(Int_t trainmombin) {fTrainMomBin = trainmombin;};
82 void SetDate(Int_t date) {fDate = date;};
83 void SetDoTraining(Bool_t train) {fDoTraining = train;};
84 void SetContinueTraining(Bool_t continTrain) {fContinueTraining = continTrain;};
85 void SetTrainPath(Int_t path) {fTrainPath = path;};
86 void LoadFile(const Char_t *InFileNN);
88 void Terminate(Option_t *);
90 void MakeTrainingLists(); // build the training and the test list
91 void MonitorTraining(Int_t mombin); // monitor training process
92 void LoadContainer(const Char_t *InFileCont);
93 //void CreateGraphs();
96 AliTRDpidRefMakerNN(const AliTRDpidRefMakerNN&); // not implemented
97 AliTRDpidRefMakerNN& operator=(const AliTRDpidRefMakerNN&); // not implemented
99 void GetV0info(AliTRDtrackV1 *TRDtrack, Float_t *v0pdg); // get the v0 information
100 void TrainNetworks(Int_t mombin); // train the neural networks for a given momentum bin
102 AliTRDReconstructor *fReconstructor; //! reconstructor needed for recalculation the PID
103 TObjArray *fV0s; //! v0 array
104 TTree *fNN; // NN data
105 TEventList *fTrain[AliTRDCalPID::kNMom][AliTRDgeometry::kNlayer]; // Training list for each momentum
106 TEventList *fTest[AliTRDCalPID::kNMom][AliTRDgeometry::kNlayer]; // Test list for each momentum
107 TMultiLayerPerceptron *fNet[AliTRDgeometry::kNlayer]; // artificial neural network
109 Int_t fLayer; // TRD layer index
110 Int_t fTrainMomBin; // momentum bin for the training
111 Int_t fEpochs; // Number of epochs for the training of the NNs
112 Int_t fMinTrain; // minimum of events needed for training
113 Int_t fDate; // date stamp for training of the NNs
114 Float_t fMom; // momentum
115 Float_t *fdEdx[10]; // dEdx array
116 Float_t fv0pid[AliPID::kSPECIES]; // pid from v0s
117 Bool_t fDoTraining; // checks if training will be done
118 Bool_t fContinueTraining; // checks if training from an older run should be continued
119 Int_t fTrainPath; // sets the path for continuing the training
121 ClassDef(AliTRDpidRefMakerNN, 2); // TRD reference maker for NN