]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICHTracker.cxx
Get methods + minor improvements added.
[u/mrichter/AliRoot.git] / RICH / AliRICHTracker.cxx
index 6ee209e26e7ead0e02fa2cca76eb201180f1b5b3..796ae82d7de6f4bfbf17a000e3005ab6cc29c88f 100644 (file)
@@ -35,6 +35,7 @@ Int_t AliRICHTracker::PropagateBack(AliESD *pESD)
 void AliRICHTracker::RecWithESD(AliESD *pESD,AliRICH *pRich,Int_t iTrackN)
 {
 //recontruction from ESD- primary way to reconstruct particle ID signal from tracks provided by core detectors
+    fnPhotBKG = 0;
 
     Double_t fField=GetFieldMap()->SolenoidField()/10;// magnetic field in Tesla
     AliESDtrack *pTrack = pESD->GetTrack(iTrackN);// get next reconstructed track
@@ -70,7 +71,7 @@ void AliRICHTracker::RecWithESD(AliESD *pESD,AliRICH *pRich,Int_t iTrackN)
 //
 // HERE CUTS ON GOLD RINGS....
 //
-    if(distMip>1||chargeMip<100) {
+    if(distMip>AliRICHParam::DmatchMIP()||chargeMip<AliRICHParam::QthMIP()) {
       //track not accepted for pattern recognition
       pTrack->SetRICHsignal(-999.); //to be improved by flags...
       return;
@@ -85,7 +86,9 @@ void AliRICHTracker::RecWithESD(AliESD *pESD,AliRICH *pRich,Int_t iTrackN)
     pTrack->SetRICHthetaPhi(helix.Ploc().Theta(),helix.Ploc().Phi());
     pTrack->SetRICHsignal(thetaCerenkov);
     pTrack->SetRICHnclusters(recon.GetHoughPhotons());
-    
+
+    fnPhotBKG = recon.GetPhotBKG();
+        
     AliDebug(1,Form("FINAL Theta Cerenkov=%f",pTrack->GetRICHsignal()));
 //
     if(pTrack->GetRICHsignal()>0) {
@@ -94,15 +97,20 @@ void AliRICHTracker::RecWithESD(AliESD *pESD,AliRICH *pRich,Int_t iTrackN)
       Double_t richPID[AliPID::kSPECIES];
       for (Int_t iPart=0;iPart<AliPID::kSPECIES;iPart++) {
         sigmaPID[iPart] = 0;
+        fErrPar[iPart] = 0;
         for(Int_t iphot=0;iphot<pRich->Clusters(iChamber)->GetEntries();iphot++) {
           recon.SetPhotonIndex(iphot);
           if(recon.GetPhotonFlag() == 2) {
-            Double_t sigma = AliRICHParam::SigmaSinglePhoton(iPart,pTrack->GetP(),recon.GetTrackTheta(),recon.GetPhiPoint()-recon.GetTrackPhi()).Mag();
+            Double_t theta_g=recon.GetTrackTheta();
+            Double_t phi_g=(recon.GetPhiPoint()-recon.GetTrackPhi());
+            Double_t sigma = AliRICHParam::SigmaSinglePhoton(iPart,pTrack->GetP(),theta_g,phi_g).Mag(); 
             sigmaPID[iPart] += 1/(sigma*sigma);
           }
         }
        if (sigmaPID[iPart]>0)
-         sigmaPID[iPart] = 1/TMath::Sqrt(sigmaPID[iPart])*0.001;
+          sigmaPID[iPart] *= (Double_t)(recon.GetHoughPhotons()-fnPhotBKG)/(Double_t)(recon.GetHoughPhotons()); // n total phots, m are background...the sigma are scaled..
+         sigmaPID[iPart] = 1/TMath::Sqrt(sigmaPID[iPart])*0.001; // sigma from parametrization are in mrad...
+          fErrPar[iPart]=sigmaPID[iPart];
         AliDebug(1,Form("sigma for %s is %f rad",AliPID::ParticleName(iPart),sigmaPID[iPart]));
       }
       CalcProb(thetaCerenkov,pTrack->GetP(),sigmaPID,richPID);
@@ -220,7 +228,7 @@ void AliRICHTracker::CalcProb(Double_t thetaCer,Double_t pmod, Double_t *sigmaPI
   Double_t thetaTh[AliPID::kSPECIES];
   for(Int_t iPart=0;iPart<AliPID::kSPECIES;iPart++){
     height[iPart]=0;
-    Double_t mass = AliPID::ParticleMass(iPart);
+    Double_t mass = AliRICHParam::fgMass[iPart];
     Double_t refIndex=AliRICHParam::RefIdxC6F14(AliRICHParam::MeanCkovEnergy());
     Double_t cosThetaTh = TMath::Sqrt(mass*mass+pmod*pmod)/(refIndex*pmod);
     thetaTh[iPart]=0;