///////////////////////////////////////////////////////////////// // // MCRunHeader // // Created: Wed Oct 30 17:43:14 2002 // Author: Oscar Blanch Bigas // Purpose: Base class for RunHeader-classes // Notes: // ///////////////////////////////////////////////////////////////// // @T \newpage // @section Source code of {\tt MCRunHeader.hxx} /* @text This section shows the include file {\tt MCRunHeader.hxx} @endtext */ #ifndef MCRunHeader_Class #define MCRunHeader_Class // @subsection Include files // @code #include "TROOT.h" #include "TObject.h" #include #include #include #include #include #define SIZE_OF_MCRUNHEADER 272 /* floats */ using namespace std; // @endcode // @subsection Class {\em MCRunHeader}: Definition // @code class MCRunHeader { protected: Float_t RunNumber; Float_t date; Float_t Corsika_version; Float_t NumObsLev; Float_t HeightLev[10]; Float_t SlopeSpec; /* Slope of primaries' energy spectrum */ Float_t ELowLim; Float_t EUppLim; /* Limits of energy range for generation */ Float_t EGS4_flag; Float_t NKG_flag; Float_t Ecutoffh; Float_t Ecutoffm; Float_t Ecutoffe; Float_t Ecutoffg; /* Physical constants and interaction flags (see CORSIKA manual): */ Float_t C[50]; float wobble_mode; /* Indicates wobble mode with which reflector has been run */ float atmospheric_model; /* Indicates atmospheric model used in absorption simulation. 0 = no atmosphere, 1 = atm_90percent, 2 = atm_isothermal, 3 = atm_corsika. */ Float_t dummy1[18]; /* not used */ Float_t CKA[40]; Float_t CETA[5]; Float_t CSTRBA[11]; Float_t dummy2[104]; /* not used */ Float_t AATM[5]; Float_t BATM[5]; Float_t CATM[5]; Float_t NFL[4]; public: MCRunHeader(void) {} // default constructor virtual ~MCRunHeader(void) {} // default destructor // Get variables void get_constantC(float *c){ for (int i=0;i<50;i++) c[i]=C[i]; } void get_constantCKA(float *cka){ for (int i=0;i<40;i++) cka[i]=CKA[i]; } void get_constantCETA(float *ceta){ for (int i=0;i<5;i++) ceta[i]=CETA[i]; } void get_constantCSTRBA(float *cstrba){ for (int i=0;i<11;i++) cstrba[i]=CSTRBA[i]; } void get_constantAATM(float *aatm){ for (int i=0;i<5;i++) aatm[i]=AATM[i]; } void get_constantBATM(float *batm){ for (int i=0;i<5;i++) batm[i]=BATM[i]; } void get_constantCATM(float *catm){ for (int i=0;i<5;i++) catm[i]=CATM[i]; } void get_constantNFL(float *nfl){ for (int i=0;i<4;i++) nfl[i]=NFL[i]; } float get_date() { return date;} float get_ELow() { return ELowLim;} float get_EUpp() { return EUppLim;} float get_EGS4() { return EGS4_flag;} float get_NKG() { return NKG_flag;} float get_Ecutoffh() {return Ecutoffh;} float get_Ecutoffm() {return Ecutoffm;} float get_Ecutoffe() {return Ecutoffe;} float get_Ecutoffg() {return Ecutoffg;} float get_wobble() {return wobble_mode;} float get_atmophere() {return atmospheric_model;} // reads EventHeader from binary input stream Int_t read ( ifstream &is ) { is.read ( (char *)this, mysize() ); return is.gcount(); } Int_t read (FILE* f) { return fread((char*)&RunNumber, (SIZE_OF_MCRUNHEADER)*sizeof(float), 1, f ); } // writes EventHeader to binary output stream Int_t write ( ofstream &os ) { os.write ( (char *)this, mysize() ); return 0; } inline int mysize(void) { return ( sizeof( float ) * SIZE_OF_MCRUNHEADER ); } inline void print ( void ) { float *ptr = (float *)this; for(int i=0; i