simplified pair cuts : pair cut settings now have to be called via the
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Apr 2009 09:38:39 +0000 (09:38 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Apr 2009 09:38:39 +0000 (09:38 +0000)
individual pointers to neg. and pos. track cuts

CORRFW/AliCFPairAcceptanceCuts.h
CORRFW/AliCFPairIsPrimaryCuts.h
CORRFW/AliCFPairPidCut.h
CORRFW/AliCFPairQualityCuts.h
CORRFW/test/AliCFRsnTask.C
CORRFW/test/AliCFRsnTask.cxx
CORRFW/test/AliCFV0Task.C

index 38c0320..eb30ca1 100755 (executable)
@@ -43,11 +43,8 @@ class AliCFPairAcceptanceCuts : public AliCFCutBase
   Bool_t IsSelected(TObject* obj) ;
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
   virtual void SetEvtInfo(TObject *mcInfo) ;
-  virtual void SetMinNHitITS  (Int_t nHitNeg, Int_t nHitPos) {fCutNeg->SetMinNHitITS (nHitNeg); fCutPos->SetMinNHitITS (nHitPos);}
-  virtual void SetMinNHitTPC  (Int_t nHitNeg, Int_t nHitPos) {fCutNeg->SetMinNHitTPC (nHitNeg); fCutPos->SetMinNHitTPC (nHitPos);}
-  virtual void SetMinNHitTRD  (Int_t nHitNeg, Int_t nHitPos) {fCutNeg->SetMinNHitTRD (nHitNeg); fCutPos->SetMinNHitTRD (nHitPos);}
-  virtual void SetMinNHitTOF  (Int_t nHitNeg, Int_t nHitPos) {fCutNeg->SetMinNHitTOF (nHitNeg); fCutPos->SetMinNHitTOF (nHitPos);}
-  virtual void SetMinNHitMUON (Int_t nHitNeg, Int_t nHitPos) {fCutNeg->SetMinNHitMUON(nHitNeg); fCutPos->SetMinNHitMUON(nHitPos);}
+  virtual AliCFAcceptanceCuts* GetNegCut() const {return fCutNeg;}
+  virtual AliCFAcceptanceCuts* GetPosCut() const {return fCutPos;}
 
   enum {
     kNCuts=2
index 2113cd7..4c7115f 100755 (executable)
@@ -38,14 +38,8 @@ class AliCFPairIsPrimaryCuts : public AliCFCutBase
 
   Bool_t IsSelected(TObject* obj) ;
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
-  virtual void SetMaxNSigmaToVertex(Double32_t neg, Double32_t pos) 
-  {fCutNeg->SetMaxNSigmaToVertex(neg); fCutPos->SetMaxNSigmaToVertex(pos);}
-  void SetRequireSigmaToVertex(Bool_t b1, Bool_t b2)
-  {fCutNeg->SetRequireSigmaToVertex(b1); fCutPos->SetRequireSigmaToVertex(b2);}
-  void SetAcceptKinkDaughters(Bool_t b1, Bool_t b2)
-  {fCutNeg->SetAcceptKinkDaughters(b1); fCutPos->SetAcceptKinkDaughters(b2);}
-  void SetAODType(Char_t typeNeg, Char_t typePos)
-  {fCutNeg->SetAODType(typeNeg); fCutPos->SetAODType(typePos);}
+  virtual AliCFTrackIsPrimaryCuts* GetNegCut() const {return fCutNeg;}
+  virtual AliCFTrackIsPrimaryCuts* GetPosCut() const {return fCutPos;}
 
   ClassDef(AliCFPairIsPrimaryCuts,2);
 
index e99bc27..74a1abc 100755 (executable)
@@ -40,20 +40,8 @@ class AliCFPairPidCut : public AliCFCutBase
   AliCFPairPidCut& operator=(const AliCFPairPidCut& c) ;
   virtual ~AliCFPairPidCut() {delete fCutNeg; delete fCutPos; };
 
-  void SetDetectors(TString detsNeg, TString detsPos) 
-  {fCutNeg->SetDetectors(detsNeg); fCutPos->SetDetectors(detsPos);}     //sets the chosen detectors
-  void SetPriors(Double_t r[AliPID::kSPECIES]) 
-  {fCutNeg->SetPriors(r); fCutPos->SetPriors(r);}                       //sets the a priori concentrations
-  void SetProbabilityCut(Double32_t cut1, Double32_t cut2)
-  {fCutNeg->SetProbabilityCut(cut1); fCutPos->SetProbabilityCut(cut2);} //sets the prob cut
-  void SetParticleType(Int_t iType1, Bool_t tocombine1, Int_t iType2, Bool_t tocombine2)        //sets the particle to be identified and the mode
-  {fCutNeg->SetParticleType(iType1,tocombine1); fCutPos->SetParticleType(iType2,tocombine2);}   // (single detector kFALSE/ combined kTRUE)
-  void SetMinDiffResp(Bool_t check1, Double_t mindiff1, Bool_t check2, Double_t mindiff2) 
-  {fCutNeg->SetMinDiffResp(check1,mindiff1); fCutPos->SetMinDiffResp(check2,mindiff2);}     //set checking at det. response level
-  void SetMinDiffProb(Bool_t check1, Double_t mindiff1, Bool_t check2, Double_t mindiff2)
-  {fCutNeg->SetMinDiffProb(check1,mindiff1); fCutPos->SetMinDiffProb(check2,mindiff2);}  //set checking at probability level
-  void SetAODmode(Bool_t mode) {fCutNeg->SetAODmode(mode); fCutPos->SetAODmode(mode);}
-  void SetProbThreshold(Double_t value1, Double_t value2) {fCutNeg->SetProbThreshold(value1); fCutPos->SetProbThreshold(value2);}
+  virtual AliCFTrackCutPid* GetNegCut() const {return fCutNeg;}
+  virtual AliCFTrackCutPid* GetPosCut() const {return fCutPos;}
 
   Bool_t IsSelected(TObject *obj); //boolean for detectors
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
index 2e66688..d7fc4f6 100755 (executable)
@@ -40,19 +40,9 @@ class AliCFPairQualityCuts : public AliCFCutBase
 
   Bool_t IsSelected(TObject* obj) ; 
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
-  virtual void SetMinNClusterTPC (UInt_t nClusNeg, UInt_t nClusPos) 
-  {fCutNeg->SetMinNClusterTPC(nClusNeg); fCutPos->SetMinNClusterTPC(nClusPos);}
-  virtual void SetMinNClusterITS (UInt_t nClusNeg, UInt_t nClusPos) 
-  {fCutNeg->SetMinNClusterITS(nClusNeg); fCutPos->SetMinNClusterITS(nClusPos);}
-  virtual void SetMaxChi2PerClusterTPC(Double32_t chi2Neg, Double32_t chi2Pos) 
-  {fCutNeg->SetMaxChi2PerClusterTPC(chi2Neg); fCutPos->SetMaxChi2PerClusterTPC(chi2Pos);}
-  virtual void SetMaxChi2PerClusterITS(Double32_t chi2Neg, Double32_t chi2Pos) 
-  {fCutNeg->SetMaxChi2PerClusterITS(chi2Neg); fCutPos->SetMaxChi2PerClusterITS(chi2Pos);}
-  virtual void SetMaxCovDiagonalElements(Double32_t* neg/*[5]*/, Double32_t* pos/*[5]*/) {
-    fCutNeg->SetMaxCovDiagonalElements(neg[0],neg[1],neg[2],neg[3],neg[4]); 
-    fCutPos->SetMaxCovDiagonalElements(pos[0],pos[1],pos[2],pos[3],pos[4]); }
-  virtual void SetStatus(ULong_t statusNeg, ULong_t statusPos) 
-  {fCutNeg->SetStatus(statusNeg); fCutPos->SetStatus(statusPos);}
+
+  virtual AliCFTrackQualityCuts* GetNegCut() const {return fCutNeg;}
+  virtual AliCFTrackQualityCuts* GetPosCut() const {return fCutPos;}
 
  private :
   AliCFTrackQualityCuts *fCutNeg ; // quality cut on negative daughter
index 53be9a2..5e29391 100644 (file)
@@ -48,19 +48,11 @@ Bool_t AliCFRsnTask(
     //here put your input data path
     if (readAOD) {
       analysisChain = new TChain("aodTree");
-      //analysisChain->Add("AliAOD.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/001/AliAOD.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/002/AliAOD.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/003/AliAOD.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/004/AliAOD.root");
+      analysisChain->Add("AliAOD.root");
     }
     else {
       analysisChain = new TChain("esdTree");
-      //analysisChain->Add("AliESDs.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/001/AliESDs.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/002/AliESDs.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/003/AliESDs.root");
-      analysisChain->Add("/home/vernet/Data/LHC08b2/300000/004/AliESDs.root");
+      analysisChain->Add("AliESDs.root");
     }
   }
   
@@ -107,8 +99,10 @@ Bool_t AliCFRsnTask(
 
   //Acceptance Cuts
   AliCFPairAcceptanceCuts *mcAccCuts = new AliCFPairAcceptanceCuts("mcAccCuts","MC acceptance cuts");
-  mcAccCuts->SetMinNHitITS(mintrackrefsITS,mintrackrefsITS);
-  mcAccCuts->SetMinNHitTPC(mintrackrefsTPC,mintrackrefsTPC);
+  mcAccCuts->GetNegCut()->SetMinNHitITS(mintrackrefsITS);
+  mcAccCuts->GetPosCut()->SetMinNHitITS(mintrackrefsITS);
+  mcAccCuts->GetNegCut()->SetMinNHitTPC(mintrackrefsTPC);
+  mcAccCuts->GetPosCut()->SetMinNHitTPC(mintrackrefsTPC);
 
   // Rec-Level kinematic cuts
   AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","rec-level kine cuts");
@@ -117,15 +111,23 @@ Bool_t AliCFRsnTask(
   recKineCuts->SetChargeRec(charge);
 
   AliCFPairQualityCuts *recQualityCuts = new AliCFPairQualityCuts("recQualityCuts","rec-level quality cuts");
-  if (!readAOD) recQualityCuts->SetMinNClusterTPC(minclustersTPC,minclustersTPC);
-  recQualityCuts->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit, 
-                           AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit) ;
-
+  if (!readAOD) {
+    recQualityCuts->GetNegCut()->SetMinNClusterTPC(minclustersTPC);
+    recQualityCuts->GetPosCut()->SetMinNClusterTPC(minclustersTPC);
+  }
+  recQualityCuts->GetNegCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
+  recQualityCuts->GetPosCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
 
 
   AliCFPairIsPrimaryCuts *recIsPrimaryCuts = new AliCFPairIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
-  if (readAOD) recIsPrimaryCuts->SetAODType(AliAODTrack::kPrimary,AliAODTrack::kPrimary);
-  else         recIsPrimaryCuts->SetMaxNSigmaToVertex(nsigmavtx,nsigmavtx);
+  if (readAOD) {
+    recIsPrimaryCuts->GetNegCut()->SetAODType(AliAODTrack::kPrimary);
+    recIsPrimaryCuts->GetPosCut()->SetAODType(AliAODTrack::kPrimary);
+  }
+  else {
+    recIsPrimaryCuts->GetNegCut()->SetMaxNSigmaToVertex(nsigmavtx);
+    recIsPrimaryCuts->GetPosCut()->SetMaxNSigmaToVertex(nsigmavtx);
+  }
 
   AliCFPairPidCut* cutPID = new AliCFPairPidCut("cutPID","ESD_PID") ;
   Double_t prior_pp[AliPID::kSPECIES] = {0.0244519,
@@ -141,18 +143,42 @@ Bool_t AliCFRsnTask(
                                           0.0733 };
 
 
-  cutPID->SetPriors(prior_pbpb);
-  cutPID->SetProbabilityCut(0.,0.);
-  cutPID->SetDetectors("TPC ITS TOF TRD","TPC ITS TOF TRD");
-  if (readAOD) cutPID->SetAODmode(kTRUE);
-  else         cutPID->SetAODmode(kFALSE);
+  cutPID->GetNegCut()->SetPriors(prior_pbpb);
+  cutPID->GetPosCut()->SetPriors(prior_pbpb);
+  cutPID->GetNegCut()->SetProbabilityCut(0);
+  cutPID->GetPosCut()->SetProbabilityCut(0);
+  cutPID->GetNegCut()->SetDetectors("ITS TPC TRD");
+  cutPID->GetPosCut()->SetDetectors("ITS TPC TRD");
+  if (readAOD) {
+    cutPID->GetNegCut()->SetAODmode(kTRUE);
+    cutPID->GetPosCut()->SetAODmode(kTRUE);
+  }
+  else {
+    cutPID->GetNegCut()->SetAODmode(kFALSE);
+    cutPID->GetPosCut()->SetAODmode(kFALSE);
+  }
   
   switch(PDG) {
-  case  -313  : cutPID->SetParticleType(AliPID::kKaon  ,kTRUE,AliPID::kPion  ,kTRUE); break;
-  case   313  : cutPID->SetParticleType(AliPID::kPion  ,kTRUE,AliPID::kKaon  ,kTRUE); break;
-  case   333  : cutPID->SetParticleType(AliPID::kKaon  ,kTRUE,AliPID::kKaon  ,kTRUE); break;
-  case  3124  : cutPID->SetParticleType(AliPID::kKaon  ,kTRUE,AliPID::kProton,kTRUE); break;
-  case -3124  : cutPID->SetParticleType(AliPID::kProton,kTRUE,AliPID::kKaon  ,kTRUE); break;
+  case  -313  : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kKaon  ,kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kPion  ,kTRUE);
+    break;
+  case   313  : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kPion  ,kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kKaon  ,kTRUE); 
+    break;
+  case   333  : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kKaon  ,kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kKaon  ,kTRUE); 
+    break;
+  case  3124  : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kKaon  ,kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kProton,kTRUE); 
+    break;
+  case -3124  : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kProton,kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kKaon  ,kTRUE); 
+    break;
   default     : printf("UNDEFINED PID\n"); break;
   }
   //cutPID->SetQAOn(kTRUE);
index 2538e1d..cf5c1bc 100644 (file)
@@ -37,6 +37,7 @@
 #include "AliRsnMCInfo.h"
 #include "AliRsnPairParticle.h"
 #include "AliAODEvent.h"
+#include "AliRsnReader.h"
 
 //__________________________________________________________________________
 AliCFRsnTask::AliCFRsnTask() :
@@ -168,27 +169,24 @@ void AliCFRsnTask::UserExec(Option_t *)
       Int_t label2 = track2->GetLabel();
       if (label2<0) continue;
 
-      //Create Resonance daughter objects
-      AliRsnDaughter* daughter1tmp = 0x0 ;
-      AliRsnDaughter* daughter2tmp = 0x0 ;
+      AliRsnDaughter daughter1;
+      AliRsnDaughter daughter2;
+
+      AliRsnReader reader ; //needed for conversion ESD/AOD->AliRsnDaughter
+
       if (isESDEvent) {
-       daughter1tmp = new AliRsnDaughter((AliESDtrack*)track1) ;
-       daughter2tmp = new AliRsnDaughter((AliESDtrack*)track2) ;
+       if (!reader.ConvertTrack(&daughter1,(AliESDtrack*)track1)) Error("UserExec","Could not convert ESD track") ;
+       if (!reader.ConvertTrack(&daughter2,(AliESDtrack*)track2)) Error("UserExec","Could not convert ESD track") ;
       }
       else if (isAODEvent) {
-       daughter1tmp = new AliRsnDaughter((AliAODTrack*)track1) ;
-       daughter2tmp = new AliRsnDaughter((AliAODTrack*)track2) ;
+       if (!reader.ConvertTrack(&daughter1,(AliAODTrack*)track1)) Error("UserExec","Could not convert AOD track") ;
+       if (!reader.ConvertTrack(&daughter2,(AliAODTrack*)track2)) Error("UserExec","Could not convert AOD track") ;
       }
       else {
        Error("UserExec","Error: input data file is not an ESD nor an AOD");
        return;
       }
 
-      AliRsnDaughter daughter1(*daughter1tmp);
-      AliRsnDaughter daughter2(*daughter2tmp);
-      delete daughter1tmp;
-      delete daughter2tmp;
-
       AliCFPair pair(track1,track2); // This object is used for cuts 
                                      // (to be replaced when AliRsnPairParticle 
                                      // inherits from AliVParticle)
index f8556f2..f57d188 100644 (file)
@@ -102,8 +102,10 @@ Bool_t AliCFV0Task(
 
   //Acceptance Cuts
   AliCFPairAcceptanceCuts *mcAccCuts = new AliCFPairAcceptanceCuts("mcAccCuts","MC acceptance cuts for V0");
-  mcAccCuts->SetMinNHitITS(mintrackrefsITS,mintrackrefsITS);
-  mcAccCuts->SetMinNHitTPC(mintrackrefsTPC,mintrackrefsTPC);
+  mcAccCuts->GetNegCut()->SetMinNHitITS(mintrackrefsITS);
+  mcAccCuts->GetPosCut()->SetMinNHitITS(mintrackrefsITS);
+  mcAccCuts->GetNegCut()->SetMinNHitTPC(mintrackrefsTPC);
+  mcAccCuts->GetPosCut()->SetMinNHitTPC(mintrackrefsTPC);
 
   // Rec-Level kinematic cuts
   AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","V0 rec-level kine cuts");
@@ -112,9 +114,12 @@ Bool_t AliCFV0Task(
   recKineCuts->SetChargeRec(0);
 
   AliCFPairQualityCuts *recQualityCuts = new AliCFPairQualityCuts("recQualityCuts","V0 rec-level quality cuts");
-  if (!readAOD) recQualityCuts->SetMinNClusterTPC(minclustersTPC,minclustersTPC);
-  recQualityCuts->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit, 
-                           AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit) ;
+  if (!readAOD) {
+    recQualityCuts->GetNegCut()->SetMinNClusterTPC(minclustersTPC);
+    recQualityCuts->GetPosCut()->SetMinNClusterTPC(minclustersTPC);
+  }
+  recQualityCuts->GetNegCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
+  recQualityCuts->GetPosCut()->SetStatus(AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit);
 
   AliCFV0TopoCuts *recTopoCuts = new AliCFV0TopoCuts("recTopoCuts","V0 Topological Cuts");
   recTopoCuts->SetMaxDcaDaughters(0.1);
@@ -135,15 +140,36 @@ Bool_t AliCFV0Task(
                                           0.7152 ,
                                           0.0442,
                                           0.0733 };
-  cutPID->SetPriors(prior_pp);
-  cutPID->SetDetectors("ITS TPC TRD","ITS TPC TRD");
-  if (readAOD) cutPID->SetAODmode(kTRUE);
-  else         cutPID->SetAODmode(kFALSE);
-  cutPID->SetProbabilityCut(0,0);
+  cutPID->GetNegCut()->SetPriors(prior_pp);
+  cutPID->GetPosCut()->SetPriors(prior_pp);
+  cutPID->GetNegCut()->SetDetectors("ITS TPC TRD");
+  cutPID->GetPosCut()->SetDetectors("ITS TPC TRD");
+
+  if (readAOD) {
+    cutPID->GetNegCut()->SetAODmode(kTRUE);
+    cutPID->GetPosCut()->SetAODmode(kTRUE);
+  }
+  else {
+    cutPID->GetNegCut()->SetAODmode(kFALSE);
+    cutPID->GetPosCut()->SetAODmode(kFALSE);
+  }
+
+  cutPID->GetNegCut()->SetProbabilityCut(0);
+  cutPID->GetPosCut()->SetProbabilityCut(0);
+
   switch(TMath::Abs(PDG)) {
-  case  310    : cutPID->SetParticleType(AliPID::kPion  , kTRUE, AliPID::kPion  , kTRUE); break;
-  case  3122   : cutPID->SetParticleType(AliPID::kPion  , kTRUE, AliPID::kProton, kTRUE); break;
-  case -3122   : cutPID->SetParticleType(AliPID::kProton, kTRUE, AliPID::kPion  , kTRUE); break;
+  case  310    : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kPion  , kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kPion  , kTRUE);
+    break;
+  case  3122   : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kPion  , kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kProton, kTRUE);
+    break;
+  case -3122   : 
+    cutPID->GetNegCut()->SetParticleType(AliPID::kProton, kTRUE);
+    cutPID->GetPosCut()->SetParticleType(AliPID::kPion  , kTRUE);
+    break;
   default      : printf("UNDEFINED PID\n"); break;
   }