]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
various fixes for the cuts
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Oct 2010 10:54:34 +0000 (10:54 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Oct 2010 10:54:34 +0000 (10:54 +0000)
PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.h
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.cxx

index 8e0b562f3c96356036e2ee4c3093cd86904d0aa0..0b6d317645a160171cb9fae52337e11eb9873001 100644 (file)
@@ -33,7 +33,10 @@ AliFlowEventCuts::AliFlowEventCuts():
   TNamed(),
   fCutNumberOfTracks(kFALSE),
   fNumberOfTracksMax(INT_MAX),
-  fNumberOfTracksMin(INT_MIN)
+  fNumberOfTracksMin(INT_MIN),
+  fCutRefMult(kFALSE),
+  fRefMultMax(INT_MAX),
+  fRefMultMin(INT_MIN)
 {
   //constructor 
 }
@@ -71,7 +74,14 @@ Bool_t AliFlowEventCuts::IsSelected(const TObject* obj)
 Bool_t AliFlowEventCuts::PassesCuts(const AliVEvent *event)
 {
   ///check if event passes cuts
-  if(fCutNumberOfTracks) {if (event->GetNumberOfTracks() < fNumberOfTracksMin || event->GetNumberOfTracks() > fNumberOfTracksMax ) return kFALSE;}
+  if(fCutNumberOfTracks) {if (event->GetNumberOfTracks() < fNumberOfTracksMin || event->GetNumberOfTracks() >= fNumberOfTracksMax ) return kFALSE;}
+  if(fCutRefMult)
+  {
+    //reference multiplicity still to be defined
+    Int_t refMult = event->GetNumberOfTracks();
+    if (refMult < fRefMultMin || refMult >= fRefMultMax )
+      return kFALSE;
+  }
   return kTRUE;
 }
 
index 87b54044571bb79a58f5ab2bbc36dcb389172c00..af72b4253252aa2a62e4fc8084ebcb210982593c 100644 (file)
@@ -30,14 +30,21 @@ class AliFlowEventCuts : public TNamed {
   
   void SetNumberOfTracksMax(const Int_t value) {fNumberOfTracksMax=value;fCutNumberOfTracks=kTRUE;}
   void SetNumberOfTracksMin(const Int_t value) {fNumberOfTracksMin=value;fCutNumberOfTracks=kTRUE;}
+  void SetRefMultMax(const Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
+  void SetRefMultMin(const Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
 
   Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
   Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
+  Int_t GetRefMultMax() const {return fRefMultMax;}
+  Int_t GetRefMultMin() const {return fRefMultMin;}
 
  private:
-  Bool_t   fCutNumberOfTracks;//cut on # of tracks
+  Bool_t fCutNumberOfTracks;//cut on # of tracks
   Int_t fNumberOfTracksMax;  //limits
   Int_t fNumberOfTracksMin;  //limits
+  Bool_t fCutRefMult; //cut on refmult
+  Int_t fRefMultMax; //max refmult
+  Int_t fRefMultMin; //min refmult
 
   ClassDef(AliFlowEventCuts,1)
 };
index e1a74179aea6af39b34396a3c6191e319bf6ae81..b65c7c28585d275c754104ab376fd0297fbde260 100644 (file)
 // ESD track cuts for flow framework 
 //
 // origin: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
+//
+// This class gurantees consistency of cut methods, trackparameter
+// selection (global tracks, TPC only, etc..) and parameter mixing
+// in the flow framework. Transparently handles different input types:
+// ESD, MC, AOD.
+// This class works in 2 steps: first the requested track parameters are
+// constructed (to be set by SetParamType() ), then cuts are applied.
+// the constructed track can be requested AFTER checking the cuts by
+// calling GetTrack(), in this case the cut object stays in control,
+// caller does not have to delete the track.
+// Additionally caller can request an AliFlowTrack object to be constructed
+// according the parameter mixing scenario requested by SetParamMix().
+// AliFlowTrack is made using MakeFlowTrack() method, its an 'object factory'
+// so caller needs to take care of the freshly created object.
 
 #include <limits.h>
 #include <float.h>
@@ -119,8 +133,9 @@ Bool_t AliFlowTrackCuts::IsSelected(TObject* obj)
 Bool_t AliFlowTrackCuts::PassesCuts(AliFlowTrackSimple* track)
 {
   //check cuts on a flowtracksimple
-  if (fCleanupTrack) delete fTrack;
-  fTrack = NULL;
+
+  //clean up from last iteration
+  if (fCleanupTrack) delete fTrack; fTrack = NULL;
   return AliFlowTrackSimpleCuts::PassesCuts(track);
 }
 
@@ -129,6 +144,9 @@ Bool_t AliFlowTrackCuts::PassesCuts(AliVParticle* vparticle)
 {
   //check cuts for an ESD vparticle
 
+  //clean up from last iteration
+  if (fCleanupTrack) delete fTrack; fTrack=NULL; 
+
   Int_t mcLabel = vparticle->GetLabel();
   if (fMCevent) fMCparticle = static_cast<AliMCParticle*>(fMCevent->GetTrack(mcLabel));
   else fMCparticle=NULL;
@@ -176,7 +194,6 @@ Bool_t AliFlowTrackCuts::PassesCuts(AliVParticle* vparticle)
 void AliFlowTrackCuts::HandleVParticle(AliVParticle* track)
 {
   //handle the general case
-  if (fCleanupTrack) delete fTrack;
   switch (fParamType)
   {
     case kMC:
@@ -193,7 +210,6 @@ void AliFlowTrackCuts::HandleVParticle(AliVParticle* track)
 void AliFlowTrackCuts::HandleESDtrack(AliESDtrack* track)
 {
   //handle esd track
-  if (fCleanupTrack) delete fTrack;
   switch (fParamType)
   {
     case kESD_Global:
@@ -220,9 +236,10 @@ AliFlowTrackCuts* AliFlowTrackCuts::GetStandardTPCOnlyTrackCuts()
 {
   //get standard cuts
   AliFlowTrackCuts* cuts = new AliFlowTrackCuts();
-  cuts->SetName("standard global track cuts 2009");
+  cuts->SetName("standard TPConly cuts");
   delete cuts->fAliESDtrackCuts;
   cuts->fAliESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+  cuts->SetParamType(kESD_TPConly);
   return cuts;
 }
 
@@ -234,6 +251,7 @@ AliFlowTrackCuts* AliFlowTrackCuts::GetStandardITSTPCTrackCuts2009(Bool_t selPri
   cuts->SetName("standard global track cuts 2009");
   delete cuts->fAliESDtrackCuts;
   cuts->fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
+  cuts->SetParamType(kESD_Global);
   return cuts;
 }