#include "AliESDtrackCuts.h" \r
#include "AlidNdPtEventCuts.h"\r
#include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
#include "AlidNdPt.h"\r
\r
using namespace std;\r
, fTrigger(AliTriggerAnalysis::kMB1) \r
, fTriggerClass(0) \r
, fParticleMode(AlidNdPtHelper::kAllPart) \r
+, fPhysicsSelection(0)\r
{\r
// default constructor\r
}\r
, fTrigger(AliTriggerAnalysis::kMB1) \r
, fTriggerClass(0) \r
, fParticleMode(AlidNdPtHelper::kAllPart) \r
+, fPhysicsSelection(0)\r
{\r
// constructor\r
}\r
\r
//_____________________________________________________________________________\r
-AlidNdPt::~AlidNdPt(){\r
+AlidNdPt::~AlidNdPt() {\r
// destructor\r
if(fdNdPtEventCuts) delete fdNdPtEventCuts; fdNdPtEventCuts=NULL; \r
if(fdNdPtAcceptanceCuts) delete fdNdPtAcceptanceCuts; fdNdPtAcceptanceCuts=NULL;\r
if(fEsdTrackCuts) delete fEsdTrackCuts; fEsdTrackCuts=NULL;\r
+ if(fPhysicsSelection) delete fPhysicsSelection; fPhysicsSelection=NULL;\r
}\r
class AliESDtrackCuts;
class AlidNdPtEventCuts;
class AlidNdPtAcceptanceCuts;
+class AliPhysicsSelection;
#include "TNamed.h"
#include "TFolder.h"
void SetTrigger(const AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; }
void SetTriggerClass(const Char_t *triggerClass) { fTriggerClass = triggerClass; }
void SetParticleMode(const AlidNdPtHelper::ParticleMode mode) { fParticleMode = mode; }
+ void SetPhysicsTriggerSelection(AliPhysicsSelection* const selection) { fPhysicsSelection = selection; }
AlidNdPtEventCuts* GetEventCuts() const { return fdNdPtEventCuts; }
AlidNdPtAcceptanceCuts* GetAcceptanceCuts() const { return fdNdPtAcceptanceCuts; }
AliTriggerAnalysis::Trigger GetTrigger() const { return fTrigger; }
const Char_t* GetTriggerClass() const { return fTriggerClass; }
AlidNdPtHelper::ParticleMode GetParticleMode() const { return fParticleMode; }
+ AliPhysicsSelection* GetPhysicsTriggerSelection() const { return fPhysicsSelection; }
private:
const Char_t * fTriggerClass; // trigger class
AlidNdPtHelper::ParticleMode fParticleMode; // selected particle (pion, kaon, ...)
+ AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class
+
ClassDef(AlidNdPt,1);
};
\r
#include "AlidNdPtEventCuts.h"\r
#include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
\r
#include "AliPWG0Helper.h"\r
#include "AlidNdPtHelper.h"\r
return;\r
}\r
\r
+ // get physics trigger selection \r
+ AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+ if(!trigSel) {\r
+ AliDebug(AliLog::kError, "cannot get trigSel");\r
+ return;\r
+ }\r
+\r
// trigger selection\r
Bool_t isEventTriggered = kTRUE;\r
if(evtCuts->IsTriggerRequired()) {\r
if(IsUseMCInfo()) { \r
- static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
- isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+ //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ trigSel->SetAnalyzeMC();\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
else {\r
- isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
}\r
\r
else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate) \r
{\r
//multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
- if(vtxESD)\r
+ if(vtxESD->GetStatus())\r
multMBTracks = vtxESD->GetNContributors();\r
} \r
else {\r
if(!track) continue;\r
if(track->Charge()==0) continue;\r
\r
+ /*\r
// cosmics analysis\r
if( GetParticleMode()==AlidNdPtHelper::kCosmics && \r
AlidNdPtHelper::IsCosmicTrack(allChargedTracks, track, i, accCuts, esdTrackCuts)==kFALSE ) \r
continue;\r
+ */\r
\r
// only postive charged \r
if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
\r
#include "AlidNdPtEventCuts.h"\r
#include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
\r
#include "AliPWG0Helper.h"\r
#include "AlidNdPtHelper.h"\r
fCorrTrackMatrix(0),\r
fContTrackMatrix(0),\r
fContMultTrackMatrix(0),\r
- fCorrMatrixFileName("")\r
+ fCorrMatrixFileName(""),\r
+ fCosmicsHisto(0)\r
{\r
// default constructor\r
for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
fCorrTrackMatrix(0),\r
fContTrackMatrix(0),\r
fContMultTrackMatrix(0),\r
- fCorrMatrixFileName(corrMatrixFileName)\r
+ fCorrMatrixFileName(corrMatrixFileName),\r
+ fCosmicsHisto(0)\r
{\r
// constructor\r
for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
if(fMCNSDEventAllPrimTrackMultHist1) delete fMCNSDEventAllPrimTrackMultHist1; fMCNSDEventAllPrimTrackMultHist1=0;\r
if(fMCTriggerPrimTrackMultHist1) delete fMCTriggerPrimTrackMultHist1; fMCTriggerPrimTrackMultHist1=0;\r
if(fMCEventPrimTrackMultHist1) delete fMCEventPrimTrackMultHist1; fMCEventPrimTrackMultHist1=0;\r
+ if(fCosmicsHisto) delete fCosmicsHisto; fCosmicsHisto=0;\r
\r
for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
if(fRecTrackHist1[i]) delete fRecTrackHist1[i]; fRecTrackHist1[i]=0;\r
fCorrRecEventHist2[i]->GetAxis(1)->SetTitle("multiplicity");\r
fCorrRecEventHist2[i]->Sumw2();\r
}\r
+ \r
+ //\r
+ // cosmics histo\r
+ //\r
+ Int_t binsCosmicsHisto[3]= {151, 300, ptNbins};\r
+ Double_t minCosmicsHisto[3]={-1.5, -2.*TMath::Pi(), 0.0}; \r
+ Double_t maxCosmicsHisto[3]={ 1.5, 2.*TMath::Pi(), 16.0}; \r
+ sprintf(name,"fCosmicsHisto");\r
+ sprintf(title,"deta:dphi:pt");\r
+ \r
+ fCosmicsHisto = new THnSparseF(name,title,3,binsCosmicsHisto,minCosmicsHisto,maxCosmicsHisto);\r
+ fCosmicsHisto->SetBinEdges(2,binsPt);\r
+ fCosmicsHisto->GetAxis(0)->SetTitle("#Delta#eta");\r
+ fCosmicsHisto->GetAxis(1)->SetTitle("#Delta#phi (rad)");\r
+ fCosmicsHisto->GetAxis(2)->SetTitle("pt (GV/c)");\r
+ fCosmicsHisto->Sumw2();\r
\r
// init output folder\r
fCorrectionFolder = CreateFolder("folderdNdPt","Correction dNdPt Folder");\r
return;\r
}\r
\r
+ // get physics trigger selection \r
+ AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+ if(!trigSel) {\r
+ AliDebug(AliLog::kError, "cannot get trigSel");\r
+ return;\r
+ }\r
+\r
// trigger selection\r
Bool_t isEventTriggered = kTRUE;\r
if(evtCuts->IsTriggerRequired()) {\r
if(IsUseMCInfo()) { \r
- static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
- isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+ //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ trigSel->SetAnalyzeMC();\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
else {\r
- isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
}\r
\r
if(isEventOK && isEventTriggered)\r
{\r
// get all charged tracks\r
- //allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,vtxESD,GetAnalysisMode());\r
allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
if(!allChargedTracks) return;\r
\r
if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
continue;\r
\r
+ // cosmics analysis\r
+ Bool_t isCosmic = kFALSE;\r
+ if( GetParticleMode()==AlidNdPtHelper::kCosmics )\r
+ {\r
+ for(Int_t j=0; j<entries;++j) \r
+ {\r
+ AliESDtrack *track1 = (AliESDtrack*)allChargedTracks->At(j);\r
+ if(!track1) continue;\r
+ if(track1->Charge()==0) continue;\r
+\r
+ if( esdTrackCuts->AcceptTrack(track) && accCuts->AcceptTrack(track) && \r
+ esdTrackCuts->AcceptTrack(track1) && accCuts->AcceptTrack(track1) ) \r
+ { \r
+ isCosmic = AlidNdPtHelper::IsCosmicTrack(track, track1, i, accCuts, esdTrackCuts);\r
+ }\r
+ if(isCosmic) \r
+ {\r
+ Double_t vCosmicsHisto[3] = {track->Eta()+track1->Eta(), track->Phi()-track1->Phi(), track1->Pt()};\r
+ fCosmicsHisto->Fill(vCosmicsHisto);\r
+ }\r
+ }\r
+ \r
+ if(!isCosmic) continue;\r
+ }\r
+\r
if(esdTrackCuts->AcceptTrack(track) && accCuts->AcceptTrack(track)) \r
multRecTemp++;\r
} \r
fMCNSDEventAllPrimTrackMultHist1->Add(entry->fMCNSDEventAllPrimTrackMultHist1);\r
fMCTriggerPrimTrackMultHist1->Add(entry->fMCTriggerPrimTrackMultHist1);\r
fMCEventPrimTrackMultHist1->Add(entry->fMCEventPrimTrackMultHist1);\r
+ fCosmicsHisto->Add(entry->fCosmicsHisto);\r
\r
for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) {\r
fRecTrackHist1[i]->Add(entry->fRecTrackHist1[i]);\r
//Double_t maxPt = accCuts->GetMaxPt();\r
//Double_t minEta = accCuts->GetMinEta();\r
//Double_t maxEta = accCuts->GetMaxEta()-0.00001;\r
+ \r
+\r
+ //\r
+ // cosmics background histo\r
+ //\r
+ h2D = fCosmicsHisto->Projection(0,1);\r
+ h2D->SetName("deta_vs_dphi_cosmics");\r
+ aFolderObj->Add(h2D);\r
\r
//\r
// pt profile\r
for(Int_t i=0; i<8; i++) {\r
h2D = fPtvsPt[i]->Projection(1,0);\r
sprintf(name,"PtvsMeanPt_%d",i);\r
+ h2D->SetName(name);\r
aFolderObj->Add(h2D);\r
}\r
\r
THnSparseF *fContMultTrackMatrix; //-> mcVz:mcPt:mcEta (fRecMultTrackMatrix / fRecTrackMatrix)
TString fCorrMatrixFileName; // file with efficiency correction matrices
+
+ // deta, dphi, pt1 for cosmics
+ THnSparseF *fCosmicsHisto; //-> deta:dphi:pt
AlidNdPtCorrection(const AlidNdPtCorrection&); // not implemented
AlidNdPtCorrection& operator=(const AlidNdPtCorrection&); // not implemented
\r
#include "AlidNdPtEventCuts.h"\r
#include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
\r
#include "AliPWG0Helper.h"\r
#include "AlidNdPtHelper.h"\r
// THnSparse track histograms\r
//\r
\r
- //nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isKink:isPrim\r
- Int_t binsRecMCTrackHist[10]={160,80,80,80,80,30,90,ptNbins, 2,2};\r
- Double_t minRecMCTrackHist[10]={0., 0., 0., -10.,-10.,-1.5, 0., ptMin, 0., 0.};\r
- Double_t maxRecMCTrackHist[10]={160.,10.,1.2, 10.,10.,1.5, 2.*TMath::Pi(), ptMax, 2.,2.};\r
+ //nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isKink:isPrim:polarity\r
+ Int_t binsRecMCTrackHist[11]={160,80,80,80,80,30,90,ptNbins, 2, 2, 2};\r
+ Double_t minRecMCTrackHist[11]={0., 0., 0., -10.,-10.,-1.5, 0., ptMin, 0., 0., 0.};\r
+ Double_t maxRecMCTrackHist[11]={160.,10.,1.2, 10.,10.,1.5, 2.*TMath::Pi(), ptMax, 2.,2., 2.};\r
\r
- fRecMCTrackHist = new THnSparseF("fRecMCTrackHist","nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isKink:isPrim",10,binsRecMCTrackHist,minRecMCTrackHist,maxRecMCTrackHist);\r
+ fRecMCTrackHist = new THnSparseF("fRecMCTrackHist","nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isKink:isPrim:polarity",10,binsRecMCTrackHist,minRecMCTrackHist,maxRecMCTrackHist);\r
fRecMCTrackHist->SetBinEdges(7,binsPt);\r
\r
fRecMCTrackHist->GetAxis(0)->SetTitle("nClust");\r
fRecMCTrackHist->GetAxis(7)->SetTitle("p_{T} (GeV/c)");\r
fRecMCTrackHist->GetAxis(8)->SetTitle("isKink");\r
fRecMCTrackHist->GetAxis(9)->SetTitle("isPrim");\r
+ fRecMCTrackHist->GetAxis(10)->SetTitle("polarity");\r
fRecMCTrackHist->Sumw2();\r
\r
// init output folder\r
return;\r
}\r
\r
+ // get physics trigger selection \r
+ AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+ if(!trigSel) {\r
+ AliDebug(AliLog::kError, "cannot get trigSel");\r
+ return;\r
+ }\r
+\r
// trigger selection\r
Bool_t isEventTriggered = kTRUE;\r
if(evtCuts->IsTriggerRequired()) {\r
if(IsUseMCInfo()) { \r
- static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
- isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+ //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ trigSel->SetAnalyzeMC();\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
else {\r
- isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
}\r
\r
}\r
\r
// fill histo\r
- Double_t vRecMCTrackHist[10] = {nClust,chi2PerCluster,clustPerFindClust,b[0],b[1],eta,phi,pt,isKink,isPrim}; \r
+ Int_t polarity = -2;\r
+ if (esdTrack->Charge() < 0.) polarity = 0; \r
+ else polarity = 1; \r
+ Double_t vRecMCTrackHist[11] = { nClust,chi2PerCluster,clustPerFindClust,b[0],b[1],eta,phi,pt,isKink,isPrim, polarity }; \r
fRecMCTrackHist->Fill(vRecMCTrackHist);\r
}\r
\r
//
// THnSparse track histograms
//
- THnSparseF *fRecMCTrackHist; //-> nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isNotKink:isPrim
+ THnSparseF *fRecMCTrackHist; //-> nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isNotKink:isPrim:polarity
AlidNdPtCutAnalysis(const AlidNdPtCutAnalysis&); // not implemented
AlidNdPtCutAnalysis& operator=(const AlidNdPtCutAnalysis&); // not implemented
}
//____________________________________________________________________
+/*
Bool_t AlidNdPtHelper::IsCosmicTrack(TObjArray *allChargedTracks, AliESDtrack *track1, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts)
{
//
if(!track2) continue;
if(track2->Charge()==0) continue;
- /*
if(track1->Pt() > 6. && track2->Pt() > 6. && (track1->Charge() + track2->Charge()) == 0 )
{
printf("track1->Theta() %f, track1->Eta() %f, track1->Phi() %f, track1->Charge() %d \n", track1->Theta(), track1->Eta(), track1->Phi(), track1->Charge());
printf("deta %f, dphi %f, dq %d \n", track1->Eta()-track2->Eta(), track1->Phi()-track2->Phi(), track1->Charge()+track2->Charge());
+ }
+
+ //
+ // cosmic tracks in TPC
+ //
+ //if( TMath::Abs( track1->Theta() - track2->Theta() ) < 0.004 &&
+ // ((TMath::Abs(track1->Phi()-track2->Phi()) - TMath::Pi() )<0.004) &&
+ if( (track1->Pt()-track2->Pt()) < 0.1 && track1->Pt() > 4.0 && (track1->Charge()+track2->Charge()) == 0 )
+ {
+ //printf("COSMIC candidate \n");
+ printf("track1->Theta() %f, track1->Eta() %f, track1->Phi() %f, track1->Charge() %d \n", track1->Theta(), track1->Eta(), track1->Phi(), track1->Charge());
+ printf("track2->Theta() %f, track2->Eta() %f, track2->Phi() %f, track2->Charge() %d \n", track2->Theta(), track2->Eta(), track2->Phi(), track2->Charge());
+ printf("dtheta %f, deta %f, dphi %f, dq %d \n", track1->Theta()-track2->Theta(), track1->Eta()-track2->Eta(), track1->Phi()-track2->Phi(), track1->Charge()+track2->Charge());
+ return kTRUE;
+ }
+ }
+
+return kFALSE;
+}
+*/
+
+//____________________________________________________________________
+Bool_t AlidNdPtHelper::IsCosmicTrack(AliESDtrack *track1, AliESDtrack *track2, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts)
+{
+//
+// check cosmic tracks
+//
+ if(!track1) return kFALSE;
+ if(!track2) return kFALSE;
+ if(!accCuts) return kFALSE;
+ if(!trackCuts) return kFALSE;
+
+ /*
+ if(track1->Pt() > 6. && track2->Pt() > 6. && (track1->Charge() + track2->Charge()) == 0 )
+ {
+ printf("track1->Theta() %f, track1->Eta() %f, track1->Phi() %f, track1->Charge() %d \n", track1->Theta(), track1->Eta(), track1->Phi(), track1->Charge());
+ printf("track2->Theta() %f, track2->Eta() %f, track2->Phi() %f, track2->Charge() %d \n", track2->Theta(), track2->Eta(), track2->Phi(), track2->Charge());
+
+ printf("deta %f, dphi %f, dq %d \n", track1->Eta()-track2->Eta(), track1->Phi()-track2->Phi(), track1->Charge()+track2->Charge());
+
}
*/
//
//if( TMath::Abs( track1->Theta() - track2->Theta() ) < 0.004 &&
// ((TMath::Abs(track1->Phi()-track2->Phi()) - TMath::Pi() )<0.004) &&
- if( (track1->Pt()-track2->Pt()) < 0.1 && track1->Pt() > 6.0 &&
+
+ if( (track1->Pt()-track2->Pt()) < 0.2 && track1->Pt() > 3.0 &&
(track1->Charge()+track2->Charge()) == 0 )
{
//printf("COSMIC candidate \n");
+ /*
printf("track1->Theta() %f, track1->Eta() %f, track1->Phi() %f, track1->Charge() %d \n", track1->Theta(), track1->Eta(), track1->Phi(), track1->Charge());
printf("track2->Theta() %f, track2->Eta() %f, track2->Phi() %f, track2->Charge() %d \n", track2->Theta(), track2->Eta(), track2->Phi(), track2->Charge());
printf("dtheta %f, deta %f, dphi %f, dq %d \n", track1->Theta()-track2->Theta(), track1->Eta()-track2->Eta(), track1->Phi()-track2->Phi(), track1->Charge()+track2->Charge());
+ */
return kTRUE;
}
- }
return kFALSE;
}
static Bool_t TestRecVertex(const AliESDVertex* vertex, AnalysisMode analysisMode, Bool_t debug = kFALSE);
static Bool_t IsPrimaryParticle(AliStack *stack, Int_t idx, ParticleMode particleMode);
- static Bool_t IsCosmicTrack(TObjArray *allChargedTracks, AliESDtrack *track, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
+ //static Bool_t IsCosmicTrack(TObjArray *allChargedTracks, AliESDtrack *track, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
+ static Bool_t IsCosmicTrack(AliESDtrack *track, AliESDtrack *track, Int_t trackIdx, AlidNdPtAcceptanceCuts *accCuts, AliESDtrackCuts *trackCuts);
static void PrintConf(AnalysisMode analysisMode, AliTriggerAnalysis::Trigger trigger);
static Int_t ConvertPdgToPid(TParticle *particle);
if (cutMode == 23)
{
// beta cuts (still under investigation)
- minNClustersTPC = 50;
+ //minNClustersTPC = 50;
+ minNClustersTPC = 90;
maxChi2PerClusterTPC = 4.0;
maxDCAtoVertexXY = 2.4; // cm
maxDCAtoVertexZ = 3.2; // cm
TString tag = "TPC-only tracking";
}
+ // TPC-only + pt cut + eta cut
+ if (cutMode == 45)
+ {
+ // beta cuts (still under investigation)
+ //minNClustersTPC = 50;
+ //maxChi2PerClusterTPC = 4.0;
+ maxDCAtoVertexXY = 2.4; // cm
+ maxDCAtoVertexZ = 3.2; // cm
+ //minPt=0.15;
+ //maxPt=1.e10;
+
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ esdTrackCuts->SetRequireTPCRefit(kFALSE);
+ esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+ //esdTrackCuts->SetMinNClustersTPC(minNClustersTPC);
+ //esdTrackCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
+ esdTrackCuts->SetMaxDCAToVertexXY(maxDCAtoVertexXY);
+ esdTrackCuts->SetMaxDCAToVertexZ(maxDCAtoVertexZ);
+ esdTrackCuts->SetDCAToVertex2D(kTRUE);
+ //esdTrackCuts->SetPtRange(minPt,maxPt);
+ //esdTrackCuts->SetEtaRange(minEta,maxEta);
+
+ TString tag = "TPC-only tracking";
+ }
+
+
+
+
+
// cuts for data without field
if (!fieldOn)
CheckLoadLibrary("libTree");
CheckLoadLibrary("libGui");
CheckLoadLibrary("libMinuit");
+ CheckLoadLibrary("libSTAT");
// Load AliRoot libraries
-void rundNdPt(const char *fileList ="inputList.txt",const char *outFile = "outputFile.root", Int_t NumberOfFiles=10,Int_t fromFile=0, Int_t nEvents=1000, Int_t firstEvent =0, Bool_t bUseMCInfo=kTRUE, Float_t zvWindow=20., Int_t cutMode=9,Float_t etaWindow=0.9, Float_t ptMin=0.15,AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPC, AlidNdPtHelper::OutputObject outputObject=AlidNdPtHelper::kCorrection,const char *corrFile = "corrMatricesFile.root",Bool_t bProof=kFALSE)
+void rundNdPt(const char *fileList ="inputList.txt",const char *outFile = "outputFile.root", Int_t NumberOfFiles=10,Int_t fromFile=0, Int_t nEvents=1000, Int_t firstEvent =0, Bool_t bUseMCInfo=kTRUE, Float_t zvWindow=20., Int_t cutMode=9,Float_t etaWindow=0.9, Float_t ptMin=0.15,AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPC, AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart, AlidNdPtHelper::OutputObject outputObject=AlidNdPtHelper::kCorrection,const char *corrFile = "corrMatricesFile.root",Bool_t bProof=kFALSE)
{
// set Proof
if(bProof) {
//cout << "*** START PROOF Lite SESSION ***" << endl;
- TProof::Open(""); // 1. Enter your username here
+ //TProof::Open(""); // 1. Enter your username here
- /*
- TProofMgr * proofmgr = TProof::Mgr("lxialpod2.gsi.de:21001");
+ //TProofMgr * proofmgr = TProof::Mgr("lxialpod2.gsi.de:21001");
//TProofMgr * proofmgr = TProof::Mgr("lxialpod.gsi.de:21001");
+ TProofMgr * proofmgr = TProof::Mgr("lxialpod.gsi.de:21004");
//TProofMgr * proofmgr = TProof::Mgr("lxial39.gsi.de:21001");
TProof * proof = proofmgr->CreateSession();
proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)10000);
- */
// -- Load AliRoot Libraries
gROOT->LoadMacro("ProofEnableAliRootGSI.C");
// Create analysis manager
AliAnalysisManager *mgr = new AliAnalysisManager;
+ //
+ // Create physics trigger selection class
+ //
+ AliPhysicsSelection *physTrigSel = new AliPhysicsSelection();
+
//
// Create event cuts
//
evtCuts->SetMeanXYZv(0.0,0.0,0.0);
evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
evtCuts->SetTriggerRequired(kTRUE);
+ //evtCuts->SetTriggerRequired(kFALSE);
// Create geom. acceptance cuts
AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
accCuts->SetMaxDCAz(30.0);
// Create standard esd track cuts
- gROOT->LoadMacro("CreatedNdPtTrackCuts.C");
+ gROOT->LoadMacro("$ALICE_ROOT/PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C");
AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
if (!esdTrackCuts) {
printf("ERROR: esdTrackCuts could not be created\n");
fdNdPtCutAnalysis->SetAcceptanceCuts(accCuts);
fdNdPtCutAnalysis->SetTrackCuts(esdTrackCuts);
fdNdPtCutAnalysis->SetAnalysisMode(analysisMode);
+ fdNdPtCutAnalysis->SetParticleMode(particleMode);
if(bUseMCInfo)
{
- fdNdPtCutAnalysis->SetTrigger(AliTriggerAnalysis::kMB1);
+ //fdNdPtCutAnalysis->SetTrigger(AliTriggerAnalysis::kMB1);
+ physTrigSel->SetAnalyzeMC();
+ fdNdPtCutAnalysis->SetPhysicsTriggerSelection(physTrigSel);
fdNdPtCutAnalysis->SetUseMCInfo(kTRUE);
}
else { // online trigger
+ fdNdPtCutAnalysis->SetPhysicsTriggerSelection(physTrigSel);
//fdNdPtCutAnalysis->SetTriggerClass("CBEAMB-ABCE-NOPF-ALL");
- fdNdPtCutAnalysis->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
+ //fdNdPtCutAnalysis->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
//fdNdPtCutAnalysis->SetTriggerClass("CINT1A-ABCE-NOPF-ALL");
//fdNdPtCutAnalysis->SetTriggerClass("CINT1C-ABCE-NOPF-ALL");
//fdNdPtCutAnalysis->SetTriggerClass("CINT1-E-NOPF-ALL");
fdNdPtAnalysis->SetAcceptanceCuts(accCuts);
fdNdPtAnalysis->SetTrackCuts(esdTrackCuts);
fdNdPtAnalysis->SetAnalysisMode(analysisMode);
+ fdNdPtAnalysis->SetParticleMode(particleMode);
if(bUseMCInfo)
{
- fdNdPtAnalysis->SetTrigger(AliTriggerAnalysis::kMB1);
+ //fdNdPtAnalysis->SetTrigger(AliTriggerAnalysis::kMB1);
+ physTrigSel->SetAnalyzeMC();
+ fdNdPtAnalysis->SetPhysicsTriggerSelection(physTrigSel);
+
fdNdPtAnalysis->SetUseMCInfo(kTRUE);
+ //fdNdPtAnalysis->SetHistogramsOn(kTRUE);
+ fdNdPtAnalysis->SetHistogramsOn(kFALSE);
}
else { // online trigger
+ fdNdPtAnalysis->SetPhysicsTriggerSelection(physTrigSel);
//fdNdPtAnalysis->SetTriggerClass("CBEAMB-ABCE-NOPF-ALL");
- fdNdPtAnalysis->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
+ //fdNdPtAnalysis->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
//fdNdPtAnalysis->SetTriggerClass("CINT1A-ABCE-NOPF-ALL");
//fdNdPtAnalysis->SetTriggerClass("CINT1C-ABCE-NOPF-ALL");
//fdNdPtAnalysis->SetTriggerClass("CINT1-E-NOPF-ALL");
}
- fdNdPtAnalysis->SetHistogramsOn(kTRUE);
- //fdNdPtAnalysis->SetHistogramsOn(kFALSE);
task->AddAnalysisObject( fdNdPtAnalysis );
}
fdNdPtCorrection->SetAcceptanceCuts(accCuts);
fdNdPtCorrection->SetTrackCuts(esdTrackCuts);
fdNdPtCorrection->SetAnalysisMode(analysisMode);
+ fdNdPtCorrection->SetParticleMode(particleMode);
if(bUseMCInfo)
{
- fdNdPtCorrection->SetTrigger(AliTriggerAnalysis::kMB1);
+ //fdNdPtCorrection->SetTrigger(AliTriggerAnalysis::kMB1);
+ physTrigSel->SetAnalyzeMC();
+ fdNdPtCorrection->SetPhysicsTriggerSelection(physTrigSel);
fdNdPtCorrection->SetUseMCInfo(kTRUE);
}
else { // online trigger
+ fdNdPtCorrection->SetPhysicsTriggerSelection(physTrigSel);
//fdNdPtCorrection->SetTriggerClass("CBEAMB-ABCE-NOPF-ALL");
- fdNdPtCorrection->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
+ //fdNdPtCorrection->SetTriggerClass("CINT1B-ABCE-NOPF-ALL");
//fdNdPtCorrection->SetTriggerClass("CINT1A-ABCE-NOPF-ALL");
//fdNdPtCorrection->SetTriggerClass("CINT1C-ABCE-NOPF-ALL");
//fdNdPtCorrection->SetTriggerClass("CINT1-E-NOPF-ALL");