#ifndef __MMcEvt__
#define __MMcEvt__

#ifndef MARS_MParContainer
#include "MParContainer.h"
#endif

class MMcEvt : public MParContainer
{
 private:
  UShort_t fPartId;         // Type of particle
  Float_t  fEnergy;         // [GeV] Energy

  Float_t fTheta;           // [rad] Theta angle of event 
  Float_t fPhi;             // [rad] Phi angle of event 

  Float_t fCoreD;           // Core d pos
  Float_t fCoreX;           // Core x pos
  Float_t fCoreY;           // Core y pos
  Float_t fImpact;          // impact parameter

  UInt_t fPhotIni;          // Initial number of photons
  UInt_t fPassPhotAtm;      // Passed atmosphere
  UInt_t fPassPhotRef;      // Passed reflector(reflectivity + effective area)
  UInt_t fPassPhotCone;     // Passed glas
  UInt_t fPhotElfromShower; // Passed qe coming from the shower
  UInt_t fPhotElinCamera;   // usPhotElfromShower + mean of phe
                            // from NSB

 public:
  MMcEvt() ;
  
  MMcEvt( UShort_t, 
	  Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t,
	  UInt_t, UInt_t, UInt_t, UInt_t, UInt_t, UInt_t ) ; 
  
  ~MMcEvt(); 

  void Clear(Option_t *opt=NULL);

  void Fill( UShort_t, 
	     Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t,
	     UInt_t, UInt_t, UInt_t, UInt_t, UInt_t, UInt_t ) ; 

  virtual void AsciiWrite(ofstream &fout) const;

  void Print(Option_t *opt=NULL) const;

  Short_t GetPartId() const { return fPartId; }       //Get Type of particle
  Float_t GetEnergy() const { return fEnergy; }        //Get Energy

  Float_t GetTheta() const { return fTheta; }          //Get Theta angle
  Float_t GetPhi() const { return fPhi ;  }            //Get Phi angle

/*    Float_t GetCoreD() { return fCoreD; }          //Get Core d pos */
/*    Float_t GetCoreX() { return fCoreX; }          //Get Core x pos */
/*    Float_t GetCoreY() { return fCoreY; }          //Get Core y pos */
  Float_t GetImpact() const { return fImpact;}         //Get impact parameter 

/*    UInt_t GetPhotIni() { return fPhotIni; }           //Get Initial photons */
/*    UInt_t GetPassPhotAtm() { return fPassPhotAtm;}    //Get Passed atmosphere */
/*    UInt_t GetPassPhotRef() { return fPassPhotRef; }   //Get Passed reflector */
/*    UInt_t GetPassPhotCone() { return fPassPhotCone; } //Get Passed glas */
  UInt_t GetPhotElfromShower() { return fPhotElfromShower; }             //Get Passed qe from shower
/*    UInt_t GetPhotElinCamera() { return fPhotElinCamera; }             //Get Passed qe total*/


  void SetPartId(Short_t PartId)
  {fPartId=PartId;}             //Set Type of particle 

  void SetEnergy(Float_t Energy)
  { fEnergy=Energy; }              //Set Energy 
 
  void SetTheta(Float_t Theta) 
  { fTheta=Theta; }                //Set Theta angle 

  void SetPhi(Float_t Phi) 
  { fPhi=Phi;  }                   //Set Phi angle 
 
  void SetCoreD(Float_t CoreD) 
  { fCoreD=CoreD; }                //Set Core d pos

  void SetCoreX(Float_t CoreX)
  { fCoreX=CoreX; }                //Set Core x pos 

  void SetCoreY(Float_t CoreY ) 
  { fCoreY=CoreY; }                //Set Core y pos

  void SetImpact(Float_t Impact) 
  { fImpact=Impact;}               //Set impact parameter
  
/*    void SetPhotIni(Short_t PhotIni)  */
/*      { fPhotIni=PhotIni; }                 //Set Initial photons */
/*    void SetPassPhotAtm(Short_t PassPhotAtm)  */
/*      { fPassPhotAtm=PassPhotAtm;}         //Set Passed atmosphere */
/*    void SetPassPhotRef(Short_t PassPhotRef)  */
/*      { fPassPhotRef=PassPhotRef ; }       //Set Passed reflector */
/*    void SetPassPhotCone(Short_t PhotCon)  */
/*      { fPassPhotCone=PhotCon; }           //Set Passed glas */


  ClassDef(MMcEvt, 1)  //Stores Montecarlo Information of one event (eg. the energy)

};

#endif
