]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/qaRec/AliTRDpidRefMaker.h
update for the new Rezidual plots
[u/mrichter/AliRoot.git] / TRD / qaRec / AliTRDpidRefMaker.h
1 #ifndef ALITRDPIDREFMAKER_H
2 #define ALITRDPIDREFMAKER_H
3
4 //////////////////////////////////////////////////////
5 //
6 // Task to build PID reference tree for the training
7 // of neural networs for the TRD PID
8 //
9 // Authors: Alex Wilk    <wilka@uni-muenster.de>
10 //          Markus Heide <mheide@uni-muenster.de>
11 //
12 ///////////////////////////////////////////////////////
13
14 #ifndef ALITRDRECOTASK_H
15 #include "AliTRDrecoTask.h"
16 #endif
17
18 #ifndef ALIPID_H
19 #include "AliPID.h"
20 #endif
21
22 #ifndef ALIPIDCALPID_H
23 #include "Cal/AliTRDCalPID.h"
24 #endif
25
26 #ifndef ALITRDGEOMETRY_H
27 #include "AliTRDgeometry.h"
28 #endif
29
30 class TTree;
31 class TEventList;
32 class TMultiLayerPerceptron;
33 class AliPID;
34 class AliTRDtrackV1;
35 class AliTRDReconstructor;
36 class AliTRDpidRefMaker : public AliTRDrecoTask
37 {
38
39 public:
40   enum  {
41     k006  =  0
42     ,k008 =  1
43     ,k010 =  2
44     ,k015 =  3
45     ,k020 =  4
46     ,k030 =  5
47     ,k040 =  6
48     ,k050 =  7
49     ,k060 =  8
50     ,k080 =  9
51     ,k100 = 10
52     ,kAll = 11
53   };
54
55   enum {
56     kGraphTrain = 0
57     ,kGraphTest = 1
58   };
59
60   enum {
61     kMoniTrain = 50
62   };
63
64   AliTRDpidRefMaker();
65   AliTRDpidRefMaker(const Char_t *InFileNN, const Char_t *InFileLQ); 
66 /*   AliTRDpidRefMaker(const Char_t *InFileNN, const Char_t *InFileLQ, AliTRDCalMomentumBin bin = kAll);  */
67   virtual ~AliTRDpidRefMaker();
68   
69   void    CreateOutputObjects();
70   void    Exec(Option_t *option);
71   void    GetRefFigure(Int_t ifig);  
72   Int_t   GetEpochs() {return fEpochs;};
73   Int_t   GetMinTrain() {return fMinTrain;};
74   Int_t   GetTrainMomBin() {return fTrainMomBin;};
75
76   Bool_t  PostProcess();
77
78   void    SetEpochs(Int_t epochs) {fEpochs = epochs;};
79   void    SetMinTrain(Int_t mintrain) {fMinTrain = mintrain;};
80   void    SetTrainMomBin(Int_t trainmombin) {fTrainMomBin = trainmombin;};
81   void    SetDate(Int_t date) {fDate = date;};
82   void    SetDoTraining(Bool_t train) {fDoTraining = train;};
83   void    LoadFiles(const Char_t *InFileNN, const Char_t *InFileLQ);
84
85   void    Terminate(Option_t *);
86
87   void    MakeTrainingLists();                                 // build the training and the test list
88   void    MonitorTraining(Int_t mombin);                       // monitor training process
89   void    LoadContainer(const Char_t *InFileCont);
90   void    CreateGraphs();
91
92 private:
93   AliTRDpidRefMaker(const AliTRDpidRefMaker&);              // not implemented
94   AliTRDpidRefMaker& operator=(const AliTRDpidRefMaker&);   // not implemented
95
96   void GetV0info(AliTRDtrackV1 *TRDtrack, Float_t *v0pdg);  // get the v0 information
97 /*   void MakeTrainingLists();                                 // build the training and the test list */
98   void TrainNetworks(Int_t mombin);                         // train the neural networks for a given momentum bin
99   void BuildLQRefs(Int_t mombin);                           // build the 2dim histos for a given momentum bin
100 /*   void MonitorTraining(Int_t mombin);                       // monitor training process */
101
102   AliTRDReconstructor *fReconstructor;     //! reconstructor needed for recalculation the PID
103   TTree         *fNN;                      // NN data
104   TTree         *fLQ;                      // LQ 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
108 /*   TMultiLayerPerceptron *fNet[AliTRDCalPID::kNMom][AliTRDCalPID::kNPlane]; // artificial neural network */
109
110   Int_t         fLayer;                    // TRD layer index 
111   Int_t         fTrainMomBin;              // momentum bin for the training
112   Int_t         fEpochs;                   // Number of epochs for the training of the NNs
113   Int_t         fMinTrain;                 // minimum of events needed for training
114   Int_t         fDate;                     // date stamp for training of the NNs
115   Float_t       fMom;                      // momentum
116   Float_t       *fdEdx[10];                // dEdx array
117   Float_t       fv0pid[AliPID::kSPECIES];  // pid from v0s
118   Bool_t        fDoTraining;               // checks if training will be done
119
120   ClassDef(AliTRDpidRefMaker, 1); // TRD reference  maker for NN
121 };
122
123 #endif