#ifndef trackCutMonitor_TpcNSigma_hh
#define trackCutMonitor_TpcNSigma_hh

#include "StHbtMaker/Infrastructure/StHbtTypes.hh"
#include "StHbtMaker/Infrastructure/StHbtTrack.hh"
#include "StHbtMaker/Base/StHbtCutMonitor.hh"
#ifdef __ROOT__
#include "TH1.h"
#endif

//_________________
class trackCutMonitor_TpcNSigma : public StHbtCutMonitor {
 public:
  trackCutMonitor_TpcNSigma();
  trackCutMonitor_TpcNSigma(const trackCutMonitor_TpcNSigma&);
  trackCutMonitor_TpcNSigma(const trackCutMonitor_TpcNSigma&, 
			    Int_t Charge);
  trackCutMonitor_TpcNSigma(Int_t Charge, Int_t PartType);
  trackCutMonitor_TpcNSigma(Int_t Charge, Int_t PartType, 
			    const Char_t* TitCutMoni);
  trackCutMonitor_TpcNSigma(Int_t charge, Int_t PartType,
			    const Char_t* TitCutMoni,
			    Int_t nBinsNSigma, 
			    Double_t NSigmaLow, Double_t NSigmaHi);
  virtual ~trackCutMonitor_TpcNSigma();

  virtual void Fill(const StHbtTrack *track);
  TH1F *HistoNSigmaElectron() {return hNSigmaElectron;}
  TH1F *HistoNSigmaPion() {return hNSigmaPion;}
  TH1F *HistoNSigmaKaon() {return hNSigmaKaon;}
  TH1F *HistoNSigmaProton() {return hNSigmaProton;}
  
  void Fill(const StHbtParticleCollection *d) {;}
  void Fill(const StHbtEvent *d1, const StHbtParticleCollection *d2) {;}
  void Fill(const StHbtPair* d) {;}
  void Fill(const StHbtKink* d) {;}
  void Fill(const StHbtV0* d) {;}
  void Fill(const StHbtEvent* d) {;}

 private:
  TH1F *hNSigmaElectron;
  TH1F *hNSigmaPion;
  TH1F *hNSigmaKaon;
  TH1F *hNSigmaProton;
  Int_t mCharge;
  Int_t mPartType;

#ifdef __ROOT__
  ClassDef(trackCutMonitor_TpcNSigma, 1)
#endif
};

#endif
