]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
new parameter mixing option: kTrackWithPtFromFirstMother
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Nov 2010 14:12:12 +0000 (14:12 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Nov 2010 14:12:12 +0000 (14:12 +0000)
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.h

index 76842ef5d660296975e936344da9f1d9a0882725..3e92f87a6f4b15ea1aac8f690a9ba5e01b83e11f 100644 (file)
@@ -232,7 +232,10 @@ Bool_t AliFlowTrackCuts::PassesCuts(AliMultiplicity* tracklet, Int_t id)
   //and should therefore not pass the mc cuts
   Int_t label0 = tracklet->GetLabel(id,0);
   Int_t label1 = tracklet->GetLabel(id,1);
+  //if possible get label and mcparticle
   fTrackLabel = (label0==label1)?tracklet->GetLabel(id,1):-1;
+  if (fTrackLabel>=0 && fMCevent) fMCparticle = static_cast<AliMCParticle*>(fMCevent->GetTrack(fTrackLabel));
+  //check MC cuts
   if (fCutMC && !PassesMCcuts()) return kFALSE;
   return kTRUE;
 }
@@ -419,28 +422,41 @@ AliFlowTrack* AliFlowTrackCuts::MakeFlowTrack() const
   //caller is resposible for deletion
   //if construction fails return NULL
   AliFlowTrack* flowtrack=NULL;
+  TParticle *tmpTParticle=NULL;
+  AliMCParticle* tmpAliMCParticle=NULL;
   if (fParamType==kESD_SPDtracklet)
   {
-    flowtrack = new AliFlowTrack();
     switch (fParamMix)
     {
       case kPure:
+        flowtrack = new AliFlowTrack();
         flowtrack->SetPhi(fTrackPhi);
         flowtrack->SetEta(fTrackEta);
         break;
       case kTrackWithMCkine:
         if (!fMCparticle) return NULL;
+        flowtrack = new AliFlowTrack();
         flowtrack->SetPhi( fMCparticle->Phi() );
         flowtrack->SetEta( fMCparticle->Eta() );
         flowtrack->SetPt( fMCparticle->Pt() );
         break;
       case kTrackWithMCpt:
         if (!fMCparticle) return NULL;
+        flowtrack = new AliFlowTrack();
         flowtrack->SetPhi(fTrackPhi);
         flowtrack->SetEta(fTrackEta);
         flowtrack->SetPt(fMCparticle->Pt());
         break;
+      case kTrackWithPtFromFirstMother:
+        if (!fMCparticle) return NULL;
+        flowtrack = new AliFlowTrack();
+        flowtrack->SetPhi(fTrackPhi);
+        flowtrack->SetEta(fTrackEta);
+        tmpTParticle = fMCparticle->Particle();
+        tmpAliMCParticle = static_cast<AliMCParticle*>(fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
+        flowtrack->SetPt(tmpAliMCParticle->Pt());
       default:
+        flowtrack = new AliFlowTrack();
         flowtrack->SetPhi(fTrackPhi);
         flowtrack->SetEta(fTrackEta);
     }
@@ -465,6 +481,12 @@ AliFlowTrack* AliFlowTrackCuts::MakeFlowTrack() const
         if (!fMCparticle) return NULL;
         flowtrack = new AliFlowTrack(fTrack);
         flowtrack->SetPt(fMCparticle->Pt());
+      case kTrackWithPtFromFirstMother:
+        if (!fMCparticle) return NULL;
+        flowtrack = new AliFlowTrack(fTrack);
+        tmpTParticle = fMCparticle->Particle();
+        tmpAliMCParticle = static_cast<AliMCParticle*>(fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
+        flowtrack->SetPt(tmpAliMCParticle->Pt());
       default:
         flowtrack = new AliFlowTrack(fTrack);
     }
index dd50fd361568d44df27cffaabb028d830770a527..76c3412f6cf503cf2627354226271e561114ca5e 100644 (file)
@@ -34,7 +34,7 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
   static AliFlowTrackCuts* GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE);
 
   enum trackParameterType { kMC, kGlobal, kESD_TPConly, kESD_SPDtracklet };
-  enum trackParameterMix  { kPure, kTrackWithMCkine, kTrackWithMCPID, kTrackWithMCpt };
+  enum trackParameterMix  { kPure, kTrackWithMCkine, kTrackWithMCPID, kTrackWithMCpt, kTrackWithPtFromFirstMother };
 
   //setters (interface to AliESDtrackCuts)
   void SetMinNClustersTPC( Int_t a ) {fAliESDtrackCuts->SetMinNClustersTPC(a);}