DSTUtil::RICH Namespace Reference


Functions

bool GoodSeed (const MIPPRICHSummary *rich, float ptot)
 Returns true if RICH summary object is likely to come from a valid ring.
float CorrectedRad (const MIPPRICHSummary *rich)
 Returns ring radius corrected for position and radius dependent ripples from geometric effect of missing columns in the RICH.
int SimpleRadPID (const MIPPEventSummary *evt, const MIPPTrackSummary *trk)


Function Documentation

bool DSTUtil::RICH::GoodSeed ( const MIPPRICHSummary rich,
float  ptot 
)

Returns true if RICH summary object is likely to come from a valid ring.

Definition at line 1031 of file DSTUtil.cxx.

References MIPPRICHSummary::rad, MIPPRICHSummary::xr, MIPPRICHSummary::xseed, MIPPRICHSummary::yr, and MIPPRICHSummary::yseed.

Referenced by NuMIPID::Fill().

01032 {
01033   if (rich->rad < 8 || rich->rad > 34) return false;
01034   if (ptot < 0.5) return false;
01035 
01036   float dx = rich->xseed - rich->xr;
01037   float dy = rich->yseed - rich->yr;
01038 
01039   const float coeffX = 360;
01040   const float coeffY = 400;
01041 
01042   if (ptot > 120) ptot = 120;
01043 
01044   float maxDX = coeffX / ptot;
01045   if (maxDX > 10) maxDX = 10;
01046   float maxDY = coeffY / ptot;
01047   if (maxDY > 10) maxDY = 10;
01048 
01049   // Stay within half the window
01050   dx /= 0.5 * maxDX;
01051   dy /= 0.5 * maxDY;
01052 
01053   return dx*dx + dy*dy <= 1;
01054 }

float DSTUtil::RICH::CorrectedRad ( const MIPPRICHSummary rich  ) 

Returns ring radius corrected for position and radius dependent ripples from geometric effect of missing columns in the RICH.

Definition at line 1060 of file DSTUtil.cxx.

References MIPPRICHSummary::rad, MIPPRICHSummary::xr, and MIPPRICHSummary::yr.

Referenced by NuMIPID::Fill(), main(), and SimpleRadPID().

01061 {
01062   const double kOmegaX = 0.5 * 3.141592 / 1.396746;
01063 
01064   // Compute radius-dependent amplitudes
01065   double Ax = -0.1331;
01066   double r = rich->rad;
01067   if (r > 29.5) r = 29.5;
01068   double Ax4 = 7.44922e-02 - 
01069     pow((3.01123e+01 - r) * 2.26274e+01, -7.05946e-01);
01070   double Ay = -4.82457e-02 -
01071     pow((3.99752e+01 - r) * 1.08708e-01, -2.13366e+01);
01072   double omegaY = 0.22;
01073   double phaseY = 0.5;
01074   
01075   // Compute corrections in x and y
01076   double corrX = Ax * sin(kOmegaX * rich->rad) * cos(kOmegaX * rich->xr) +
01077     Ax4 * cos(kOmegaX * rich->xr * 0.25);
01078   double corrY = Ay * cos(omegaY * rich->yr + phaseY);
01079 
01080   return rich->rad - corrX - corrY;
01081 }

int DSTUtil::RICH::SimpleRadPID ( const MIPPEventSummary evt,
const MIPPTrackSummary trk 
)

Definition at line 1085 of file DSTUtil.cxx.

References CorrectedRad(), MIPPEventSummary::GetRICH(), MIPPTrackSummary::irich, PIDDef::kMuon, PIDDef::kProton, PIDDef::kRBmass, PIDDef::kUndef, RICH::L, p, and MIPPTrackSummary::ptot.

Referenced by main().

01086                                                              {
01087   MIPPRICHSummary* rich = evt->GetRICH(trk->irich);
01088   if (!rich) return PIDDef::kUndef;
01089   
01090   double p = trk->ptot;
01091   double r = DSTUtil::RICH::CorrectedRad(rich);
01092   //const double dr = 1;
01093   //const double dp = 5;
01094 
01095   double L = 990.0;  // Length of RICH radiator volume in cm
01096   double n = 1.00045;// Index of Refraction for this run
01097   double Theta;      // Cerenkov angle
01098   double Beta;       // p/E for particle
01099   double masssqr;    // Particle mass^2
01100   Theta = asin(r/L);
01101   Beta = 1. / n / (1. - 0.5*pow(Theta, 2));
01102   
01103   masssqr = (pow(p/Beta, 2) - pow(p, 2));
01104 
01105   int id=PIDDef::kUndef;
01106   for (int i=PIDDef::kProton; i!=PIDDef::kMuon; --i) {
01107     double msq = PIDDef::kRBmass[i] * PIDDef::kRBmass[i];
01108     if (fabs(1-masssqr/msq) < 0.05) {
01109       id = i;
01110       break;
01111     }
01112   }
01113 
01114   return id;
01115 }


Generated on Mon Nov 23 08:05:24 2009 for MIPP(E907) by  doxygen 1.4.7