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
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);
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;}
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
//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");
}
}
//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");
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,
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);
#include "AliRsnMCInfo.h"
#include "AliRsnPairParticle.h"
#include "AliAODEvent.h"
+#include "AliRsnReader.h"
//__________________________________________________________________________
AliCFRsnTask::AliCFRsnTask() :
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)
//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");
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);
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;
}