Source: src/include/ArichAerogel.hh
|
|
|
|
#ifndef _ArichAerogel_hh_
#define _ArichAerogel_hh_
#include
#include
#include "ArichGeo.hh"
class ArichAerogel: public ArichGeo {
public:
ArichAerogel();
~ArichAerogel();
HepDouble z();
HepDouble zin();
HepDouble zout();
HepDouble Refind(HepDouble energy);
HepDouble RefindMax();
HepDouble RayleighScatteringLength(HepDouble energy);
HepDouble TransmissionLength();
HepDouble Thickness();
HepInt Inside(Hep3Vector r);
HepDouble NearestBorder(Hep3Vector r,Hep3Vector dir,Hep3Vector &norm, HepInt &type);
Hep3Vector fPosition; // position on the exit surface
Hep3Vector fPosition0; // position on the entrance surface
Hep3Vector fNorm;
HepDouble fRind;
HepDouble fTransmissionLength;
HepDouble fThickness;
HepDouble fRadius2[2]; //sqr of inner and outer border
HepDouble fExit;
HepDouble fEntrance;
// Cherenkov Photon constants
HepDouble fSthc2Max;
HepDouble Sthc2Max();
HepDouble N0();
friend std::ostream& operator<< (std::ostream& o, ArichAerogel& a);
};
inline HepInt ArichAerogel::Inside(Hep3Vector r){
if (r(2)>fPosition(2) || r(2)<(fPosition(2)-fThickness)) return 0;
HepDouble r2=sqr(r(0))+sqr(r(1));
if (r2 > fRadius2[1]) return 0;
if (r2 < fRadius2[0]) return 0;
return 1;
};
inline HepDouble ArichAerogel::Sthc2Max(){ return fSthc2Max;}
inline HepDouble ArichAerogel::z() {return fPosition.z();}
inline HepDouble ArichAerogel::zout() {return fPosition.z();}
inline HepDouble ArichAerogel::zin() {return fPosition0.z();}
inline HepDouble ArichAerogel::Refind(HepDouble energy=0){ return fRind; };
inline HepDouble ArichAerogel::RefindMax(){ return fRind;}
inline HepDouble ArichAerogel::Thickness(){return fThickness;}
inline HepDouble ArichAerogel::RayleighScatteringLength(HepDouble energy){
HepDouble x=1240./energy/400;
return fTransmissionLength*x*x*x*x;
};
inline HepDouble ArichAerogel::TransmissionLength(){return fTransmissionLength;}
extern ArichAerogel *gArichAerogel;
#endif
Generated by: rok on f9pc43.ijs.si on Wed Jun 18 12:02:34 2003, using kdoc 2.0a54. |