Source: src/include/ArichParticle.hh
|
|
|
|
#ifndef _ArichParticle_hh_
#define _ArichParticle_hh_
#include "ArichPhoton.hh"
#include
#include
#include
#define NHYP 5
class ArichInterval{
public:
HepDouble ll,ul;
ArichInterval(HepDouble l,HepDouble u){ll=l;ul=u;};
~ArichInterval(){};
};
class ArichParticle: public ArichGeo {
public:
HepInt fTracked; // if outside acceptance -1 / 0 not tracked / 1 tracked to the detector plane
HepDouble fPath; // path for Cherenkov Radiation
Hep3Vector fVertexPosition; // R() initial position
Hep3Vector fVertexDirection; // DIR() initial direction
Hep3Vector fPosition; // R() point on track
Hep3Vector fDirection; // DIR() track direction
HepDouble fMomentum; // track momentum
HepDouble fMass; // particle mass
HepDouble fCharge; // particle mass
HepInt fNgenPhot; // number of emitted photons
Hep3Vector fVirtualCenter;//virtual center of the ring on the detector
Hep3Vector fAeroIn; // intersection of track with aerogel entrance
Hep3Vector fAeroOut; // intersection of track with aerogel exit
Hep3Vector fDetector; // intersection of track with detector entrance
Hep3Vector fMeanEPoint; // mean emmision point
Hep3Vector fMeanEDir; // mean emmision point direction
Hep3Vector fX,fY,fZ; // track system - unit vectors
HepDouble fSigma[4]; // track sigma for TX and TY (1:2 corr, 3:4 uncor)
HepInt fMCtype; // Monte Carlo particle e=0, mu=1, pi=2, K=3, p=4;
HepDouble thc[NHYP]; // cherenkov angles of hypotheses
HepDouble stfs[NHYP]; // expected number of signal photons
HepDouble acceptance[NHYP]; // track acceptance
HepDouble stfb; // expected number of background photons
HepDouble fAx; // normalisation parameter for background (linear)
HepDouble fAB; // fit factor for background photons (linear)
HepDouble fSab; // linear interval integral narrow
HepDouble fScd; // linear interval integral
HepDouble fSf; // linear interval integral thcmax^2/2 /fSab
HepDouble plkh[NHYP]; // log Likelihoods
HepDouble sfot; // measured number of photons
vector fNarrowWindow;
vector fWideWindow;
HepInt fPid; // reconstruction flag
HepInt fRecoFlag; // reconstruction flag
HepInt *ptr; // track pointer
HepDouble stf_anti; // count (photon with sig<0 is in antiwindow)
HepInt fPhoton; // index of the first generated photon
ArichParticle();
ArichParticle(Hep3Vector r, Hep3Vector dir, HepDouble p, HepInt type);
~ArichParticle();
void Set(Hep3Vector r, Hep3Vector dir, HepDouble p, HepInt type);
HepInt Lund2Type(int lundtype);
HepInt MCIdentity();
HepDouble Beta();
HepDouble SignalEstimate();
HepDouble BackgroundEstimate();
HepInt SetRecoWindow();
HepInt SetRWin(HepInt nn, HepDouble *thc, HepDouble win, HepDouble x1_min, HepDouble x2_max,HepDouble *x1, HepDouble *x2,HepInt &n, HepDouble &sum1);
HepInt IsInWideWindow(HepDouble thc);
HepInt IsInNarrowWindow(HepDouble thc);
HepDouble ExpectedCherenkovAngle(HepDouble p,HepDouble mass, HepDouble refind);
HepInt CerenkovAngle(Hep3Vector hit,HepDouble &th_cer,HepDouble &fi_cer);
Hep3Vector Refraction(Hep3Vector s, HepDouble n);
HepInt CerenkovPhoton(Hep3Vector r, Hep3Vector dir, Hep3Vector rh, Hep3Vector &rf, Hep3Vector &dirf);
HepDouble GeometricalAcceptance(HepDouble thc,HepDouble thc_min,HepDouble sig_pmt);
HepInt ChargedParticleToPlane( HepDouble bz, HepDouble zout);
HepInt Track( );
HepInt CherenkovPhotonEmission();
HepInt TrackSystem();
friend ostream& operator<< (ostream& o, ArichParticle& d);
private:
};
inline HepInt ArichParticle::MCIdentity(){
return Lund2Type(fMCtype);
}
#endif
Generated by: rok on f9pc43.ijs.si on Wed Jun 18 12:02:34 2003, using kdoc 2.0a54. |