DP:calculation of distance to CPV done in TSM
authorkharlov <kharlov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Mar 2007 06:57:46 +0000 (06:57 +0000)
committerkharlov <kharlov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Mar 2007 06:57:46 +0000 (06:57 +0000)
PHOS/AliPHOSPIDv0.cxx
PHOS/AliPHOSPIDv0.h
PHOS/AliPHOSPIDv1.cxx
PHOS/AliPHOSPIDv1.h

index f7957bf..bcdbdb8 100644 (file)
@@ -18,6 +18,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.14  2006/09/07 18:31:08  kharlov
+ * Effective c++ corrections (T.Pocheptsov)
+ *
  * Revision 1.13  2005/05/28 14:19:04  schutz
  * Compilation warnings fixed by T.P.
  *
@@ -173,33 +176,34 @@ AliPHOSPIDv0::~AliPHOSPIDv0()
   //Empty dtor, fFormula leaks 
 }
 
-//____________________________________________________________________________
-Float_t  AliPHOSPIDv0::GetDistance(AliPHOSEmcRecPoint * emc,AliPHOSRecPoint * cpv, Option_t *  Axis)const
-{
-  // Calculates the distance between the EMC RecPoint and the PPSD RecPoint
-  const AliPHOSGeometry * geom = AliPHOSLoader::GetPHOSGeometry() ; 
-  TVector3 vecEmc ;
-  TVector3 vecCpv ;
-  
-  emc->GetLocalPosition(vecEmc) ;
-  cpv->GetLocalPosition(vecCpv) ; 
-  if(emc->GetPHOSMod() == cpv->GetPHOSMod()){ 
-    
-    // Correct to difference in CPV and EMC position due to different distance to center.
-    // we assume, that particle moves from center
-    Float_t dCPV = geom->GetIPtoOuterCoverDistance();
-    Float_t dEMC = geom->GetIPtoCrystalSurface() ;
-    dEMC         = dEMC / dCPV ;
-    vecCpv = dEMC * vecCpv  - vecEmc ; 
-    if (Axis == "X") return vecCpv.X();
-    if (Axis == "Y") return vecCpv.Y();
-    if (Axis == "Z") return vecCpv.Z();
-    if (Axis == "R") return vecCpv.Mag();
-  } 
-  return 100000000 ;
-}
+//DP
+////____________________________________________________________________________
+//Float_t  AliPHOSPIDv0::GetDistance(AliPHOSEmcRecPoint * emc,AliPHOSRecPoint * cpv, Option_t *  Axis)const
+//{
+//  // Calculates the distance between the EMC RecPoint and the PPSD RecPoint
+// 
+//  const AliPHOSGeometry * geom = AliPHOSLoader::GetPHOSGeometry() ; 
+//  TVector3 vecEmc ;
+//  TVector3 vecCpv ;
+//  
+//  emc->GetLocalPosition(vecEmc) ;
+//  cpv->GetLocalPosition(vecCpv) ; 
+//  if(emc->GetPHOSMod() == cpv->GetPHOSMod()){ 
+//    
+//    // Correct to difference in CPV and EMC position due to different distance to center.
+//    // we assume, that particle moves from center
+//    Float_t dCPV = geom->GetIPtoOuterCoverDistance();
+//    Float_t dEMC = geom->GetIPtoCrystalSurface() ;
+//    dEMC         = dEMC / dCPV ;
+//    vecCpv = dEMC * vecCpv  - vecEmc ; 
+//    if (Axis == "X") return vecCpv.X();
+//    if (Axis == "Y") return vecCpv.Y();
+//    if (Axis == "Z") return vecCpv.Z();
+//    if (Axis == "R") return vecCpv.Mag();
+//  } 
+// 
+//  return 100000000 ;
+//}
 
 //____________________________________________________________________________
 void  AliPHOSPIDv0::Exec(Option_t * option) 
@@ -375,7 +379,7 @@ void  AliPHOSPIDv0::MakeRecParticles()
     // Looking at the CPV detector
     Int_t cpvdetector= 0 ;  //1 hit and 0 no hit     
     if(cpv)
-      if(GetDistance(emc, cpv,  "R") < fCpvEmcDistance) 
+      if(ts->GetCpvDistance("R") < fCpvEmcDistance) 
        cpvdetector = 1 ;  
     
     Int_t type = showerprofile + 2 * slow  + 4 * cpvdetector ;
index 9563acd..9eeeaeb 100644 (file)
@@ -8,6 +8,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.11  2006/09/07 18:31:08  kharlov
+ * Effective c++ corrections (T.Pocheptsov)
+ *
  * Revision 1.10  2005/05/28 14:19:04  schutz
  * Compilation warnings fixed by T.P.
  *
@@ -63,7 +66,7 @@ public:
   
   virtual void Init() ;
   void     MakeRecParticles(void ) ;
-  Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance CPV-EMC
+//  Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance CPV-EMC
   TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv)const ;
   void     PrintRecParticles(Option_t * option) ;
   virtual void WriteRecParticles(); 
index 3403f9e..8fc9d03 100644 (file)
@@ -18,6 +18,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.104  2006/12/15 10:46:26  hristov
+ * Using TMath::Abs instead of fabs
+ *
  * Revision 1.103  2006/09/07 18:31:08  kharlov
  * Effective c++ corrections (T.Pocheptsov)
  *
@@ -753,46 +756,49 @@ Float_t  AliPHOSPIDv1::GetParameterToCalculateEllipse(TString particle, TString
 }
 
 
+//DP____________________________________________________________________________
+//Float_t  AliPHOSPIDv1::GetDistance(AliPHOSEmcRecPoint * emc,AliPHOSCpvRecPoint * cpv, Option_t *  axis)const
+//{
+//  // Calculates the distance between the EMC RecPoint and the PPSD RecPoint
+//  
+//  const AliPHOSGeometry * geom = AliPHOSGetter::Instance()->PHOSGeometry() ; 
+//  TVector3 vecEmc ;
+//  TVector3 vecCpv ;
+//  if(cpv){
+//    emc->GetLocalPosition(vecEmc) ;
+//    cpv->GetLocalPosition(vecCpv) ; 
+//    
+//    if(emc->GetPHOSMod() == cpv->GetPHOSMod()){      
+//      // Correct to difference in CPV and EMC position due to different distance to center.
+//      // we assume, that particle moves from center
+//      Float_t dCPV = geom->GetIPtoOuterCoverDistance();
+//      Float_t dEMC = geom->GetIPtoCrystalSurface() ;
+//      dEMC         = dEMC / dCPV ;
+//      vecCpv = dEMC * vecCpv  - vecEmc ; 
+//      if (axis == "X") return vecCpv.X();
+//      if (axis == "Y") return vecCpv.Y();
+//      if (axis == "Z") return vecCpv.Z();
+//      if (axis == "R") return vecCpv.Mag();
+//    }
+//    return 100000000 ;
+//  }
+//  return 100000000 ;
+//}
 //____________________________________________________________________________
-Float_t  AliPHOSPIDv1::GetDistance(AliPHOSEmcRecPoint * emc,AliPHOSCpvRecPoint * cpv, Option_t *  axis)const
-{
-  // Calculates the distance between the EMC RecPoint and the PPSD RecPoint
-  
-  const AliPHOSGeometry * geom = AliPHOSGetter::Instance()->PHOSGeometry() ; 
-  TVector3 vecEmc ;
-  TVector3 vecCpv ;
-  if(cpv){
-    emc->GetLocalPosition(vecEmc) ;
-    cpv->GetLocalPosition(vecCpv) ; 
-    
-    if(emc->GetPHOSMod() == cpv->GetPHOSMod()){      
-      // Correct to difference in CPV and EMC position due to different distance to center.
-      // we assume, that particle moves from center
-      Float_t dCPV = geom->GetIPtoOuterCoverDistance();
-      Float_t dEMC = geom->GetIPtoCrystalSurface() ;
-      dEMC         = dEMC / dCPV ;
-      vecCpv = dEMC * vecCpv  - vecEmc ; 
-      if (axis == "X") return vecCpv.X();
-      if (axis == "Y") return vecCpv.Y();
-      if (axis == "Z") return vecCpv.Z();
-      if (axis == "R") return vecCpv.Mag();
-    }
-    return 100000000 ;
-  }
-  return 100000000 ;
-}
-//____________________________________________________________________________
-Int_t  AliPHOSPIDv1::GetCPVBit(AliPHOSEmcRecPoint * emc,AliPHOSCpvRecPoint * cpv, Int_t effPur, Float_t e) const
+Int_t  AliPHOSPIDv1::GetCPVBit(AliPHOSTrackSegment * ts, Int_t effPur, Float_t e) const
 {
   //Calculates the pid bit for the CPV selection per each purity.
   if(effPur>2 || effPur<0)
     AliError(Form("Invalid Efficiency-Purity choice %d",effPur));
+
+  if(ts->GetCpvIndex()<0)
+    return 1 ; //no CPV cluster
   
   Float_t sigX = GetCpv2EmcDistanceCut("X",e);
   Float_t sigZ = GetCpv2EmcDistanceCut("Z",e);
   
-  Float_t deltaX = TMath::Abs(GetDistance(emc, cpv,  "X"));
-  Float_t deltaZ = TMath::Abs(GetDistance(emc, cpv,  "Z"));
+  Float_t deltaX = TMath::Abs(ts->GetCpvDistance("X"));
+  Float_t deltaZ = TMath::Abs(ts->GetCpvDistance("Z"));
   //Info("GetCPVBit"," xdist %f, sigx %f, zdist %f, sigz %f",deltaX, sigX, deltaZ,sigZ) ;
  
   //if(deltaX>sigX*(effPur+1))
@@ -1122,8 +1128,8 @@ void  AliPHOSPIDv1::MakePID()
     //########## CPV-EMC  Distance#######################
     //     Info("MakePID", "Distance");
 
-    Float_t x             = TMath::Abs(GetDistance(emc, cpv,  "X")) ;
-    Float_t z             = GetDistance(emc, cpv,  "Z") ;
+    Float_t x             = TMath::Abs(ts->GetCpvDistance("X")) ;
+    Float_t z             = ts->GetCpvDistance("Z") ;
    
     Double_t pcpv         = 0 ;
     Double_t pcpvneutral  = 0. ;
@@ -1402,7 +1408,7 @@ void  AliPHOSPIDv1::MakeRecParticles()
       // Looking at the CPV detector. If RCPV greater than CpvEmcDistance, 
       // 1st,2nd or 3rd bit (depending on the efficiency-purity point )
       // is set to 1
-      if(GetCPVBit(emc, cpv, effPur,e) == 1 ){  
+      if(GetCPVBit(ts, effPur,e) == 1 ){  
        rp->SetPIDBit(effPur) ;
        //cout<<"CPV bit "<<effPur<<endl;
       }
index 84bb9aa..77f9d3c 100644 (file)
@@ -8,6 +8,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.58  2006/04/12 11:32:03  alibrary
+ * Simplification of Makefile and some small corrections
+ *
  * Revision 1.57  2006/01/23 17:51:48  hristov
  * Using the recommended way of forward declarations for TVector and TMatrix (see v5-08-00 release notes). Additional clean-up
  *
@@ -38,6 +41,7 @@ class TVector3 ;
 class AliPHOSClusterizerv1 ;
 class AliPHOSCpvRecPoint ;
 class AliPHOSEmcRecPoint ;
+class AliPHOSTrackSegment ;
 class AliPHOSTrackSegmentMakerv1 ;
 #include "AliPHOSPID.h"
 #include "AliPID.h"
@@ -121,8 +125,7 @@ private:
   Double_t LandauF(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence  a+b/(x*x)+c/x
   Double_t LandauPol2(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b*x+c*x*x
  // Relative Distance CPV-EMC
-  Float_t GetDistance     (AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv, Option_t * axis)const ; 
-  Int_t   GetCPVBit       (AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv, Int_t EffPur, Float_t e) const;
+  Int_t   GetCPVBit       (AliPHOSTrackSegment * ts, Int_t EffPur, Float_t e) const;
   Int_t   GetPrincipalBit (TString particle, const Double_t* P, Int_t EffPur, Float_t e)const ; //Principal cut
   Int_t   GetHardPhotonBit(AliPHOSEmcRecPoint * emc) const;
   Int_t   GetHardPi0Bit   (AliPHOSEmcRecPoint * emc) const;