]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICHParam.cxx
RichAna() and CheckPR() moved to AliRICHReconstructor
[u/mrichter/AliRoot.git] / RICH / AliRICHParam.cxx
index 3a9ee9e086fecb3669743fa3b16295553fd7a529..3444026198c7eef3c55d4bbfa2b0a10c89f5d754 100644 (file)
@@ -257,7 +257,7 @@ void AliRICHParam::ReadErrFiles()
   FILE *pChromErr, *pGeomErr, *pLocErr;  
 
   if(!count) {
-     AliInfoGeneral("ReadErrFiles","reading RICH error parameters...");
+     AliInfoClass("reading RICH error parameters...");
      pChromErr = fopen(Form("%s/RICH/RICHConfig/SigmaChromErr.txt",gSystem->Getenv("ALICE_ROOT")),"r");
      pGeomErr  = fopen(Form("%s/RICH/RICHConfig/SigmaGeomErr.txt",gSystem->Getenv("ALICE_ROOT")),"r");
      pLocErr   = fopen(Form("%s/RICH/RICHConfig/SigmaLocErr.txt",gSystem->Getenv("ALICE_ROOT")),"r");
@@ -279,7 +279,7 @@ void AliRICHParam::ReadErrFiles()
        fgErrLoc[2][i] = l2;
        fgErrLoc[3][i] = l3;    
      }
-     AliInfoGeneral("ReadErrFiles","DONE successfully!");
+     AliInfoClass("DONE successfully!");
      fclose(pChromErr);
      fclose(pGeomErr);
      fclose(pLocErr);
@@ -300,14 +300,50 @@ TVector3 AliRICHParam::SigmaSinglePhoton(Int_t partID, Double_t mom, Double_t th
   Double_t mass = fgMass[partID];
   Double_t massRef = fgMass[4]; // all the files are calculated for protons...so mass ref is proton mass
   pmom = mom*massRef/mass; // normalized momentum respect to proton...
-  if(pmom>6.5) pmom = 6.5;
-  Double_t oneOverRefIndex = 1/RefIdxC6F14(6.755);
+  if(pmom>PmodMax()) pmom = PmodMax();
+  Double_t oneOverRefIndex = 1/RefIdxC6F14(MeanCkovEnergy());
   Double_t pmin = mass*oneOverRefIndex/TMath::Sqrt(1-oneOverRefIndex*oneOverRefIndex);
   if(pmom<pmin) return v;
-  v.SetX(Interpolate(fgErrChrom,pmom,theta,phi));
-  v.SetY(Interpolate(fgErrGeom,pmom,theta,phi));
-  v.SetZ(Interpolate(fgErrLoc,pmom,theta,phi));
-  v*=1.5; // take into account bigger errors due to multiplicity...to change in future
+  Double_t Theta = theta*TMath::RadToDeg();
+  if(phi<0) phi+=TMath::TwoPi();
+  Double_t Phi = phi*TMath::RadToDeg();
+  v.SetX(Interpolate(fgErrChrom,pmom,Theta,Phi));
+  v.SetY(Interpolate(fgErrGeom,pmom,Theta,Phi));
+  v.SetZ(Interpolate(fgErrLoc,pmom,Theta,Phi));
+//  v*=1.5; // take into account bigger errors due to multiplicity...to change in future
+
+  return v;
+}//SigmaSinglePhoton
+//__________________________________________________________________________________________________
+TVector3 AliRICHParam::SigmaSinglePhoton(Double_t thetaCer, Double_t theta, Double_t phi)
+
+{
+// Find sigma for single photon. It returns the thrree different errors. If you want
+// to have the error---> TVector3.Mag()
+// partID = 0,1,2,3,4 ---> e,mu,pi,k,p in agreement with AliPID
+  TVector3 v(-999,-999,-999);
+  Double_t pmom;
+
+  ReadErrFiles();
+  Double_t massRef = fgMass[4]; // all the files are calculated for protons...so mass ref is proton mass
+  Double_t beta=1./(RefIdxC6F14(MeanCkovEnergy())*TMath::Cos(thetaCer));
+  if(beta>=1) {
+    pmom=6.5; // above physical limi the error is calculated at the saturation...
+  } else {
+    Double_t gamma=1./TMath::Sqrt(1-beta*beta);
+    pmom = beta*gamma*massRef; // normalized momentum respect to proton...
+  }
+  if(pmom>PmodMax()) pmom = PmodMax();
+  Double_t oneOverRefIndex = 1/RefIdxC6F14(MeanCkovEnergy());
+  Double_t pmin = massRef*oneOverRefIndex/TMath::Sqrt(1-oneOverRefIndex*oneOverRefIndex);
+  if(pmom<pmin) return v;
+  Double_t Theta = theta*TMath::RadToDeg();
+  if(phi<0) phi+=TMath::TwoPi();
+  Double_t Phi = phi*TMath::RadToDeg();
+  v.SetX(Interpolate(fgErrChrom,pmom,Theta,Phi));
+  v.SetY(Interpolate(fgErrGeom,pmom,Theta,Phi));
+  v.SetZ(Interpolate(fgErrLoc,pmom,Theta,Phi));
+//  v*=1.5; // take into account bigger errors due to multiplicity...to change in future
 
   return v;
 }//SigmaSinglePhoton