Adapted to pp collision data.
authormisko <misko@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Dec 2009 08:53:02 +0000 (08:53 +0000)
committermisko <misko@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Dec 2009 08:53:02 +0000 (08:53 +0000)
PWG2/UNICOR/AliUnicorAnalCorrel.cxx
PWG2/UNICOR/AliUnicorEventAliceESD.cxx
PWG2/UNICOR/AliUnicorEventAliceESD.h
PWG2/UNICOR/AliUnicorHN.h

index 0effffb..595f526 100644 (file)
@@ -54,14 +54,15 @@ AliUnicorAnalCorrel::AliUnicorAnalCorrel(Char_t *nam, Double_t emi, Double_t ema
 
   TAxis *ax[8];
   ax[0] = new TAxis(3,-0.5,2.5);ax[0]->SetTitle("trumixrot");
-  ax[1] = new TAxis(5,0,0.5);   ax[1]->SetTitle("centrality");
+  ax[1] = new TAxis(5,0,1.0);   ax[1]->SetTitle("centrality");
   ax[2] = new TAxis(3,emi,ema); ax[2]->SetTitle("pair y");
   //ax[3] = new TAxis(8,-pi,pi);  ax[3]->SetTitle("pair phi"); // wrt event plane
   ax[3] = new TAxis(1,-pi,pi);  ax[3]->SetTitle("pair phi"); // wrt event plane
   ax[4] = new TAxis(7,ptbins);  ax[4]->SetTitle("(pair pt)/2 (GeV)");
   ax[5] = new TAxis(8,0,pi);    ax[5]->SetTitle("q-theta");
   ax[6] = new TAxis(16,-pi,pi); ax[6]->SetTitle("q-phi");
-  ax[7] = new TAxis(64,qbins);  ax[7]->SetTitle("q (GeV/c)");
+  //ax[7] = new TAxis(64,qbins);  ax[7]->SetTitle("q (GeV/c)");
+  ax[7] = new TAxis(100,0,2.0); ax[7]->SetTitle("q (GeV/c)");
   AliUnicorHN *pair = new AliUnicorHN("pair",8,ax);
   for (int i=0; i<8; i++) delete ax[i];
   fHistos.Add(pair);
@@ -123,6 +124,8 @@ void AliUnicorAnalCorrel::Process(Int_t tmr, const AliUnicorEvent * const ev0, c
       fPa.CalcPairCM();
       if (fPa.QCM()==0) return; // should not be too frequent
       double phi = TVector2::Phi_mpi_pi(fPa.Phi()-rpphi);
+      double weigth = 1.0;
+      //if (tmr==0) weigth = 1.0+0.3*exp(-fPa.QCM()*fPa.QCM()*1*1/0.197/0.197); 
       pair->Fill((double) tmr,           // 0 for tru, 1 for mix, 2 for rot
                 cent,                   // centrality
                 fPa.Rapidity(),         // pair rapidity
@@ -131,7 +134,7 @@ void AliUnicorAnalCorrel::Process(Int_t tmr, const AliUnicorEvent * const ev0, c
                 fPa.QCMTheta(),         // polar angle of Q
                 fPa.QCMPhiOut(),        // azimuthal angle of Q w.r.t. out
                 fPa.QCM(),              // |p2-p1| in c.m.s.
-                1.0);                   // weigth
+                weigth);                // weigth
     }
   }
 }
index 3787eba..a29ee81 100644 (file)
@@ -45,7 +45,7 @@ Bool_t AliUnicorEventAliceESD::Good() const
   // event cuts
 
   if (fabs(Zver())>1) return kFALSE;
-  if (fESD->GetPrimaryVertex()->GetZRes()>0.1) return kFALSE;
+  if (fESD->GetPrimaryVertexTPC()->GetZRes()>1.5) return kFALSE;
   return kTRUE;
 }
 //=============================================================================
@@ -63,19 +63,30 @@ Bool_t AliUnicorEventAliceESD::ParticleGood(Int_t i, Int_t pidi) const
   if (!tp) return 0;           
 
   Float_t r,z;
-  track->GetImpactParameters(r,z);
-  if (fabs(z)>0.2) return 0;                          // impact parameter in z
-  if (fabs(r)>0.1) return 0;                          // impact parameter in xy
+  track->GetImpactParametersTPC(r,z);
+  if (fabs(z)>1) return 0;                            // impact parameter in z
+  if (fabs(r)>1) return 0;                            // impact parameter in xy
+
+  //TBits shared = track->GetTPCSharedMap();
+  //if (shared.CountBits()) return 0;                   // no shared clusters; pragmatic but dangerous
 
   // pid
 
   if (pidi==0) return 1;
+
   if (!track->IsOn(AliESDtrack::kTPCpid)) return 0;
   Double_t p[AliPID::kSPECIES];
   track->GetTPCpid(p);
   Int_t q = tp->Charge();
+
   if (pidi == -211) return p[AliPID::kPion]+p[AliPID::kMuon]>0.5 && q==-1;
   else if (pidi == 211) return p[AliPID::kPion]+p[AliPID::kMuon]>0.5 && q==1;
+  //if (pidi == -211) return ParticleDedx(i)<1.2 && ParticleP(i)<0.75 && q==-1;
+  //else if (pidi == 211) return ParticleDedx(i)<1.2 && ParticleP(i)<0.75 && q==1;
+  else if (pidi == -321) return p[AliPID::kKaon]>0.5 && q==-1;
+  else if (pidi ==  321) return p[AliPID::kKaon]>0.5 && q==1;
+  else if (pidi == -2212) return p[AliPID::kProton]>0.5 && q==-1;
+  else if (pidi ==  2212) return p[AliPID::kProton]>0.5 && q==1;
   else return 0;
 }
 //=============================================================================
@@ -86,6 +97,9 @@ Bool_t AliUnicorEventAliceESD::PairGood(Double_t /*p0*/, Double_t the0, Double_t
 
   double dthe = the1-the0;
   double dphi = TVector2::Phi_mpi_pi(phi1-phi0);
-  return (fabs(dthe)>0.005 || fabs(dphi)>0.030);
+  //  double dpt = p1*sin(the1) - p0*sin(the0);
+  //  return (fabs(dthe)>0.005 || fabs(dphi)>0.030);
+  return (fabs(dthe)>0.010 || fabs(dphi)>0.060);
+  //return (dpt*dphi<0);
 }
 //=============================================================================
index d3829a5..883c40f 100644 (file)
@@ -27,17 +27,17 @@ class AliUnicorEventAliceESD : public AliUnicorEvent {
   Double_t    Centrality() const {return 0.9999*exp(-NParticles()/20.0);} // OK for pp
   void        RP(Double_t &qx, Double_t &qy) const {AliUnicorEvent::RP(qx,qy,2);}
   Double_t    RPphi() const {Double_t qx,qy; RP(qx,qy); return atan2(qy,qx);}
-  Double_t    Zver() const {return fESD->GetPrimaryVertex()->GetZv()/10.0;}
+  Double_t    Zver() const {return fESD->GetPrimaryVertexTPC()->GetZv()/10.0;}
   Int_t       NParticles() const {return fESD->GetNumberOfTracks();}
 
   Bool_t      ParticleGood(Int_t i, Int_t pidi=0) const;
   Double_t    ParticleP(Int_t i)     const {return fESD->GetTrack(i)->GetTPCInnerParam()->P();}
   Double_t    ParticleTheta(Int_t i) const {return fESD->GetTrack(i)->GetTPCInnerParam()->Theta();}
   Double_t    ParticlePhi(Int_t i)   const {return TVector2::Phi_mpi_pi(fESD->GetTrack(i)->GetTPCInnerParam()->Phi());}
-  Double_t    ParticleDedx(Int_t i)  const {return fESD->GetTrack(i)->GetTPCsignal()/47.0;}
+  Double_t    ParticleDedx(Int_t i)  const {return fESD->GetTrack(i)->GetTPCsignal()/50.0;}
   Bool_t      PairGood(Double_t p0, Double_t the0, Double_t phi0, 
                       Double_t p1, Double_t the1, Double_t phi1) const;
-  // alternative: GetTPCInnerParam, GetConstrainedParam
+  // alternative: GetConstrainedParam, GetInnerParam, GetTPCInnerParam 
   void        SetESD(AliESDEvent * const esd) {fESD = esd;}
   AliESDEvent *GetESD() const {return fESD;}
 
index b7bba07..9839e00 100644 (file)
@@ -45,6 +45,7 @@ class AliUnicorHN : public TH1D {
   TH1D *ProjectOn(char *nam, Int_t dim, const Double_t * const first, const Double_t * const last);
   // project on 2-dim histogram
   TH2D *ProjectOn(char *nam, Int_t dim0, Int_t dim1, const Int_t * const first=0, const Int_t * const last=0) const;
+  void  OneToMul(Int_t n, Int_t *k) const;      // calc n-dim indices from 1-dim index
 
  protected:
 
@@ -56,7 +57,6 @@ class AliUnicorHN : public TH1D {
   static Int_t Albins(Int_t n, TAxis **ax);     // product of nbins of ax[0]...ax[n-1]
   Int_t MulToOne(const Int_t * const k) const;  // calc 1-dim index from n-dim indices
   Int_t MulToOne(Double_t *x);                  // calc 1-dim index from n-dim vector
-  void  OneToMul(Int_t n, Int_t *k) const;      // calc n-dim indices from 1-dim index
 
   ClassDef(AliUnicorHN,1)
 };