diff --git a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h
index 53cc0310476cca6434ee474a952430aaf7df226b..50e9103375a879132a19a3773246d2e1dbd1edb1 100644
--- a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h
+++ b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h
@@ -2,6 +2,8 @@
 //
 // 2019 A. Senger a.senger@gsi.de
 //
+// 2020 A. Senger: add ANN pID
+//
 //----------------------------------------
 
 
@@ -29,98 +31,104 @@ class TH1D;
 class TH2D;
 class TH3D;
 class TProfile;
+class TMultiLayerPerceptron;
 
-class CbmAnaDimuonAnalysis : public FairTask {
+class CbmAnaDimuonAnalysis : public FairTask{
 public:
   CbmAnaDimuonAnalysis(TString name, TString setup);
-
-  virtual ~CbmAnaDimuonAnalysis() {}
+  
+  virtual ~CbmAnaDimuonAnalysis(){}
   virtual InitStatus Init();
   virtual void Exec(Option_t* opt);
   virtual void Finish();
   virtual void SetParContainers();
 
-  void SetChi2StsCut(Double_t cut) { fChi2StsCut = cut; }
-  void SetChi2MuchCut(Double_t cut) { fChi2MuchCut = cut; }
-  void SetChi2VertexCut(Double_t cut) { fChi2VertexCut = cut; }
-
-  void SetNofMuchCut(Int_t cut) { fNofMuchCut = cut; }
-  void SetNofStsCut(Int_t cut) { fNofStsCut = cut; }
-  void SetNofTrdCut(Int_t cut) { fNofTrdCut = cut; }
-
-  void SetSigmaTofCut(Int_t cut) { fSigmaTofCut = cut; }
-
-  void UseCuts(Bool_t cut) { fUseCuts = cut; }
-  void UseMC(Bool_t useMC) { fUseMC = useMC; }
-
-  //  void SetHistoFileName(TString name) {fFileName = name; }
-  //  void SetEffFileName(TString name)   {fEffFileName = name; }
-
-  void FillProfile(TProfile* profile, Double_t param, Bool_t trigger);
-
+  void SetChi2StsCut   (Double_t cut)  { fChi2StsCut    = cut; }
+  void SetChi2MuchCut  (Double_t cut)  { fChi2MuchCut   = cut; }
+  void SetChi2VertexCut(Double_t cut)  { fChi2VertexCut = cut; }
+  
+  void SetNofMuchCut(Int_t cut)  { fNofMuchCut = cut; }
+  void SetNofStsCut (Int_t cut)  { fNofStsCut  = cut; }
+  void SetNofTrdCut (Int_t cut)  { fNofTrdCut  = cut; }
+  void SetAnnCut    (Double_t cut, Int_t neurons)  { fAnnCut  = cut; fNeurons = neurons;}
+  
+  void SetSigmaTofCut (Int_t cut)  { fSigmaTofCut  = cut; }
+  
+  void UseCuts(Bool_t cut) {fUseCuts = cut; }   
+  void UseMC(Bool_t useMC) {fUseMC = useMC; }
+  
+//  void SetHistoFileName(TString name) {fFileName = name; }  
+//  void SetEffFileName(TString name)   {fEffFileName = name; }
+    
+  Double_t CalculateAnnValue(CbmAnaMuonCandidate* mu);
+  Double_t CalculateAnnValue(Double_t P, Double_t M, Double_t Chi2Vertex, Double_t Chi2STS, Double_t Chi2MUCH, Double_t Chi2TRD, Int_t NofSTS, Int_t NofMUCH, Int_t NofTRD, Int_t NofTOF);
+  
+  void FillProfile(TProfile *profile, Double_t param, Bool_t trigger);
+    
 private:
-  Int_t fEvent;
-  TClonesArray* fMCTracks;
-  TClonesArray* fStsTracks;
-  TClonesArray* fStsTrackMatches;
-  TClonesArray* fMuchTracks;
-  TClonesArray* fMuchTrackMatches;
-  TClonesArray* fGlobalTracks;
-  TClonesArray* fTrdTracks;
+  Int_t         fEvent;             
+  TClonesArray* fMCTracks;          
+  TClonesArray* fStsTracks;         
+  TClonesArray* fStsTrackMatches;   
+  TClonesArray* fMuchTracks;        
+  TClonesArray* fMuchTrackMatches;  
+  TClonesArray* fGlobalTracks;      
+  TClonesArray* fTrdTracks;        
   TClonesArray* fTofHit;
-  TClonesArray* fMuPlus;
-  TClonesArray* fMuMinus;
+  TClonesArray* fMuPlus;      
+  TClonesArray* fMuMinus;      
   TClonesArray* fParticles;
 
   TTree* fInputTree;
   TFile* fPlutoFile;
-
-  CbmStsKFTrackFitter* fFitter;
-  CbmTrdTrackFitterKF* fFitterTRD;
+  
+  CbmStsKFTrackFitter*    fFitter;
+  CbmTrdTrackFitterKF*    fFitterTRD;
   CbmGlobalTrackFitterKF* fFitterGlobal;
-
+  
   CbmVertex* fVertex;
 
-  Double_t fChi2StsCut;
-  Double_t fChi2MuchCut;
+  Double_t fChi2StsCut; 
+  Double_t fChi2MuchCut; 
   Double_t fChi2VertexCut;
+  Double_t fAnnCut;
+  Int_t fNeurons;
   Int_t fSigmaTofCut;
-
+  
   Double_t fMass;
-
+  
   Bool_t fUseCuts;
   Bool_t fUseMC;
-
-  Int_t fNofMuchCut;
-  Int_t fNofStsCut;
-  Int_t fNofTrdCut;
+  
+  Int_t fNofMuchCut; 
+  Int_t fNofStsCut; 
+  Int_t fNofTrdCut; 
 
   Double_t p0min, p1min, p2min;
   Double_t p0max, p1max, p2max;
-
-  //  TString fFileName;
-  //  TString fEffFileName;
+  
+  TString fFileAnnName;
+//  TString fEffFileName;
+//  TString fFileName;
   TString fPlutoFileName;
   TString fSetupName;
-
-  CbmMuchGeoScheme* fGeoScheme;
-
-  TH2D *YPt_pluto, *YPt_StsAcc, *YPt_StsMuchAcc, *YPt_StsMuchTrdAcc,
-    *YPt_StsMuchTrdTofAcc;
-  TH2D *YPt_VtxReco, *YPt_VtxStsReco, *YPt_VtxStsMuchReco,
-    *YPt_VtxStsMuchTrdReco, *YPt_VtxStsMuchTrdTofReco;
-  TH3D* YPtM;
-
-  TProfile *acc_P[4][3], *acc_Theta[4][3];
+        
+  CbmMuchGeoScheme* fGeoScheme;  
+  
+  TH2D *YPt_pluto, *YPt_StsAcc, *YPt_StsMuchAcc,  *YPt_StsMuchTrdAcc,  *YPt_StsMuchTrdTofAcc;
+  TH2D *YPt_VtxReco, *YPt_VtxStsReco, *YPt_VtxStsMuchReco,  *YPt_VtxStsMuchTrdReco,  *YPt_VtxStsMuchTrdTofReco;
+  TH3D *YPtM;
+  
+  TProfile *acc_P[4][3],     *acc_Theta[4][3];
   TProfile *effReco_P[4][3], *effReco_Theta[4][3];
-  TProfile *eff4pi_P[5][3], *eff4pi_Theta[5][3];
-
-  TH1D* BgSup[6];
-
+  TProfile *eff4pi_P[5][3],  *eff4pi_Theta[5][3];
+  
+  TH1D *BgSup[6];
+  
   CbmAnaDimuonAnalysis(const CbmAnaDimuonAnalysis&);
   CbmAnaDimuonAnalysis operator=(const CbmAnaDimuonAnalysis&);
 
-  ClassDef(CbmAnaDimuonAnalysis, 2);
+  ClassDef(CbmAnaDimuonAnalysis,2);
 };
 
 #endif