Source: src/include/ArichParticle.hh


Annotated List
Files
Globals
Hierarchy
Index
#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.