]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Allow cut on z for leading jet (Marta)
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Sep 2013 06:20:51 +0000 (06:20 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Sep 2013 06:20:51 +0000 (06:20 +0000)
PWGJE/EMCALJetTasks/AliJetContainer.cxx
PWGJE/EMCALJetTasks/AliJetContainer.h

index 99e242d629aafba19b3dbcd4149e2a3147f206ec..2ea48930150b8a13860f8ce146c75e64d7975461 100644 (file)
@@ -33,6 +33,8 @@ AliJetContainer::AliJetContainer():
   fJetMaxPhi(10),
   fMaxClusterPt(1000),
   fMaxTrackPt(100),
+  fZLeadingEmcCut(10.),
+  fZLeadingChCut(10.),
   fLeadingHadronType(0),
   fNLeadingJets(1),
   fJetBitMap(0),
@@ -65,6 +67,8 @@ AliJetContainer::AliJetContainer(const char *name):
   fJetMaxPhi(10),
   fMaxClusterPt(1000),
   fMaxTrackPt(100),
+  fZLeadingEmcCut(10.),
+  fZLeadingChCut(10.),
   fLeadingHadronType(0),
   fNLeadingJets(1),
   fJetBitMap(0),
@@ -279,12 +283,16 @@ Bool_t AliJetContainer::AcceptJet(AliEmcalJet *jet) const
   if (jet->AreaEmc()<fAreaEmcCut)
     return kFALSE;
 
+  if( GetZLeadingCharged(jet)>fZLeadingChCut ||  GetZLeadingEmc(jet)>fZLeadingEmcCut)
+    return kFALSE;
+
   if (!AcceptBiasJet(jet))
     return kFALSE;
   
   if (jet->MaxTrackPt() > fMaxTrackPt || jet->MaxClusterPt() > fMaxClusterPt)
     return kFALSE;
 
   Double_t jetPhi = jet->Phi();
   Double_t jetEta = jet->Eta();
   
@@ -343,6 +351,61 @@ void AliJetContainer::GetLeadingHadronMomentum(TLorentzVector &mom, AliEmcalJet
     mom.SetPtEtaPhiM(maxClusterPt,maxClusterEta,maxClusterPhi,0.139);
 }
 
+//________________________________________________________________________
+Double_t AliJetContainer::GetZLeadingEmc(AliEmcalJet *jet) const
+{
+
+  if (fClusterContainer && fClusterContainer->GetArray() ) {
+    TLorentzVector mom;
+    
+    AliVCluster *cluster = jet->GetLeadingCluster(fClusterContainer->GetArray());
+    if (cluster) {
+      cluster->GetMomentum(mom, const_cast<Double_t*>(fVertex));
+      
+      return GetZ(jet,mom);
+    }
+    else
+      return -1;
+  }
+  else
+    return -1;
+}
+
+//________________________________________________________________________
+Double_t AliJetContainer::GetZLeadingCharged(AliEmcalJet *jet) const
+{
+
+  if (fParticleContainer && fParticleContainer->GetArray() ) {
+    TLorentzVector mom;
+    
+    AliVParticle *track = jet->GetLeadingTrack(fParticleContainer->GetArray());
+    if (track) {
+      mom.SetPtEtaPhiM(track->Pt(),track->Eta(),track->Phi(),0.139);
+      
+      return GetZ(jet,mom);
+    }
+    else
+      return -1;
+  }
+  else
+    return -1;
+}
+
+//________________________________________________________________________
+Double_t AliJetContainer::GetZ(AliEmcalJet *jet, TLorentzVector mom) const
+{
+
+  Double_t pJetSq = jet->Px()*jet->Px() + jet->Py()*jet->Py() + jet->Pz()*jet->Pz();
+
+  if(pJetSq>0.)
+    return (mom.Px()*jet->Px() + mom.Py()*jet->Py() + mom.Pz()*jet->Pz())/pJetSq;
+  else {
+    AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f",GetName(), pJetSq));
+    return -1;
+  }
+
+}
+
 //________________________________________________________________________
 void AliJetContainer::SetJetEtaPhiEMCAL()
 {
@@ -391,7 +454,8 @@ void AliJetContainer::ResetCuts()
   fMaxClusterPt = 1000;
   fMaxTrackPt = 100;
   fLeadingHadronType = 0;
-
+  fZLeadingEmcCut = 10.;
+  fZLeadingChCut = 10.;
 }
 
 //________________________________________________________________________
index 227fb2cf33e1780e5701cf455ec313c6a0440f20..1001730d0c7ab1adaa5685ec5816308f9db6aee2 100644 (file)
@@ -48,6 +48,7 @@ class AliJetContainer : public AliEmcalContainer {
   void                        SetJetPhiLimits(Float_t min, Float_t max)            { fJetMinPhi = min, fJetMaxPhi = max ; }
   void                        SetJetAreaCut(Float_t cut)                           { fJetAreaCut     = cut              ; }
   void                        SetPercAreaCut(Float_t p)                            { if(fJetRadius==0.) AliWarning("JetRadius not set. Area cut will be 0"); fJetAreaCut = p*TMath::Pi()*fJetRadius*fJetRadius; }
+  void                        SetZLeadingCut(Float_t zemc, Float_t zch)            { fZLeadingEmcCut = zemc; fZLeadingChCut = zch ; }
 
   void                        SetAreaEmcCut(Double_t a = 0.99)                     { fAreaEmcCut     = a                ; }
   void                        SetJetPtCut(Float_t cut)                             { fJetPtCut       = cut              ; }
@@ -79,6 +80,9 @@ class AliJetContainer : public AliEmcalContainer {
   Int_t                       GetNJets()                            const    {return GetNEntries();}
   Double_t                    GetLeadingHadronPt(AliEmcalJet* jet)  const;
   void                        GetLeadingHadronMomentum(TLorentzVector &mom, AliEmcalJet* jet)  const;
+  Double_t                    GetZ(AliEmcalJet *jet, TLorentzVector mom) const;
+  Double_t                    GetZLeadingEmc(AliEmcalJet *jet)      const;
+  Double_t                    GetZLeadingCharged(AliEmcalJet *jet)  const;
   AliRhoParameter            *GetRhoParameter()                              {return fRho;}
   Double_t                    GetRhoVal()                           const    { if (fRho) return fRho->GetVal(); else return 0;}
   const TString&              GetRhoName()                          const    {return fRhoName;}
@@ -108,6 +112,8 @@ class AliJetContainer : public AliEmcalContainer {
   Float_t                     fJetMaxPhi;            //  maximum phi jet acceptance  
   Float_t                     fMaxClusterPt;         //  maximum cluster constituent pt to accept the jet
   Float_t                     fMaxTrackPt;           //  maximum track constituent pt to accept the jet
+  Float_t                     fZLeadingEmcCut;       //  maximum z,leading neutral
+  Float_t                     fZLeadingChCut;        //  maximum z,leading charged
   Int_t                       fLeadingHadronType;    //  0 = charged, 1 = neutral, 2 = both
   Int_t                       fNLeadingJets;         //  how many jets are to be considered the leading jet(s)
   UInt_t                      fJetBitMap;            //  bit map of accepted jets
@@ -123,7 +129,7 @@ class AliJetContainer : public AliEmcalContainer {
   AliJetContainer(const AliJetContainer& obj); // copy constructor
   AliJetContainer& operator=(const AliJetContainer& other); // assignment
 
-  ClassDef(AliJetContainer,3);
+  ClassDef(AliJetContainer,4);
 
 };