,fRecDcaNegPhiEtaPos(0)
,fRecDcaPosPhiEtaNeg(0)
,fRecDcaNegPhiEtaNeg(0)
+
+ ,fRecDcaPosPtEtaPos(0)
+ ,fRecDcaNegPtEtaPos(0)
+ ,fRecDcaPosPtEtaNeg(0)
+ ,fRecDcaNegPtEtaNeg(0)
+
,fRecPtPosPhiEtaPos(0)
,fRecPtNegPhiEtaPos(0)
,fRecPtPosPhiEtaNeg(0)
,fRecDcaPhiPtPosEtaNeg(0)
,fRecDcaPhiPtNegEtaNeg(0)
,fEtavPt(0)
-
+ ,fCompareTPCparam(0)
,sdca(0)
fEta = new TH1F("fEta",
" #eta",
200, -2., 2.);
- fEtavPt = new TH2F("fEtavPt",
- " #eta -p_{T}",
- 200, -2., 2.,
- 100, 0, 1.5);
+ fEtavPt = new TH2F("fEtavPt",
+ " #eta -p_{T}",
+ 200, -2., 2.,
+ 100, 0, 1.5);
+ fCompareTPCparam = new TH2F("fCompareTPCparam",
+ "fCompareTPCparam",
+ 100, -1., 1.,100,-5, 5);
+
fEtaPhi = new TH2F("fEtaPhi",
" #eta - #phi",
200, -2., 2., 128, 0., 2. * TMath::Pi());
100,-2.5 , 2., 180, 0, TMath::Pi()*2);
fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
+
+ //new
+ fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
+ " dca vs. pt",
+ 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+ fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+ fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+ fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
+ " dca vs. pt",
+ 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+ fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+ fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+ fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
+ " dca vs. pt",
+ 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+ fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+ fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+ fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
+ " dca vs. pt",
+ 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+ fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+ fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
-
-
// YIELDs ---------------- for TPC sectors
for(Int_t sector=0; sector<18;sector++){
fHists->Add(fHistRECpt);
fHists->Add(fEta);
fHists->Add(fEtavPt);
+ fHists->Add(fCompareTPCparam);
fHists->Add(fEtaPhi);
fHists->Add(fThetaRec);
fHists->Add(fPhiRec);
fHists->Add(fRecPtPosPhiEtaNeg);
fHists->Add(fRecPtNegPhiEtaNeg);
+ fHists->Add(fRecDcaPosPtEtaPos);
+ fHists->Add(fRecDcaNegPtEtaPos);
+ fHists->Add(fRecDcaPosPtEtaNeg);
+ fHists->Add(fRecDcaNegPtEtaNeg);
+
fHists->Add(fRecDcaPhiPtPosEtaPos);
fHists->Add(fRecDcaPhiPtPosEtaNeg);
fHists->Add(fRecDcaPhiPtNegEtaPos);
leadingPhi=phiIn;
}
-
+
fqRec->Fill(tpcP->Charge());
tpcP->GetImpactParameters(xy,z);
fDiffDcaD->Fill(sdca+xy);
-
+ if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
//for positive particles
fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
fRecPhiPosEtaPos->Fill(phiIn);
fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
+ fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
}
fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
fRecPhiPosEtaNeg->Fill(phiIn);
fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
+ fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
}
fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
fRecPhiNegEtaPos->Fill(phiIn);
fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
+ fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
}
fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
fRecPhiNegEtaNeg->Fill(phiIn);
fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
+ fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
}
// }//second track loop
+
+ if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
+
}//first track loop
-AliAnalysisTaskSE* AddTaskQAsym()\r
-{\r
- // Creates a QA task exploiting simple symmetries phi, eta +/-, charge ...\r
- \r
- // Get the pointer to the existing analysis manager via the static access method.\r
- //==============================================================================\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- if (!mgr) {\r
- ::Error("AddTaskQAsym", "No analysis manager to connect to.");\r
- return NULL;\r
- } \r
- \r
- // Check the analysis type using the event handlers connected to the analysis manager.\r
- //==============================================================================\r
- if (!mgr->GetInputEventHandler()) {\r
- ::Error("AddTasQAsym", "This task requires an input event handler");\r
- return NULL;\r
- }\r
- TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"\r
- \r
- // Configure analysis\r
- //===========================================================================\r
- \r
- \r
- \r
- AliAnalysisTaskQASym *task = new AliAnalysisTaskQASym("AliAnalysisTaskQASym");\r
- AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts","Standard");\r
- esdTrackCutsL->SetMinNClustersTPC(50);\r
- esdTrackCutsL->SetRequireTPCRefit(kTRUE);\r
- esdTrackCutsL->SetMaxDCAToVertexXY(3.);\r
- esdTrackCutsL->SetMaxDCAToVertexZ(3.);\r
- esdTrackCutsL->SetAcceptKinkDaughters(kFALSE);\r
- \r
- task->SetCuts(esdTrackCutsL);\r
-\r
- mgr->AddTask(task);\r
- \r
- AliAnalysisDataContainer *cout = mgr->CreateContainer("QAsymHists",TList::Class(),\r
- AliAnalysisManager::kOutputContainer,"QAsym.root");\r
-\r
- mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());\r
- mgr->ConnectOutput (task, 1, cout);\r
- \r
- return task;\r
-}\r
-\r
-\r
+AliAnalysisTaskQASym * AddTaskQAsym(Int_t runNumber)
+
+{
+ // Creates a QA task exploiting simple symmetries phi, eta +/-, charge ...
+
+ // Get the pointer to the existing analysis manager via the static access method.
+ //==============================================================================
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ ::Error("AddTaskQAsym", "No analysis manager to connect to.");
+ return NULL;
+ }
+
+ // Check the analysis type using the event handlers connected to the analysis manager.
+ //==============================================================================
+ if (!mgr->GetInputEventHandler()) {
+ ::Error("AddTasQAsym", "This task requires an input event handler");
+ return NULL;
+ }
+ TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+
+ // Configure analysis
+ //===========================================================================
+
+
+ //Task for global tracks
+ AliAnalysisTaskQASym *task0 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global");
+ task0->SetTrackType(0);
+ task0->SelectCollisionCandidates();
+ //Task for ITS tracks
+ AliAnalysisTaskQASym *task1 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_ITS");
+ task1->SetTrackType(1);
+ task1->SelectCollisionCandidates();
+ //Task for TPC tracks
+ AliAnalysisTaskQASym *task2 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_TPC");
+ task2->SetTrackType(2);
+ task2->SelectCollisionCandidates();
+
+ //cuts for global tracks
+ AliESDtrackCuts* esdTrackCutsL0 = new AliESDtrackCuts("AliESDtrackCuts0","Global");
+ esdTrackCutsL0->SetMinNClustersTPC(70);
+ esdTrackCutsL0->SetRequireTPCRefit(kTRUE);
+ esdTrackCutsL0->SetMaxDCAToVertexXY(3.);
+ esdTrackCutsL0->SetMaxDCAToVertexZ(3.);
+ esdTrackCutsL0->SetAcceptKinkDaughters(kFALSE);
+
+ AliESDtrackCuts* esdTrackCutsL1 = new AliESDtrackCuts("AliESDtrackCuts1","ITS");
+ esdTrackCutsL1->SetMaxDCAToVertexXY(3.);
+ esdTrackCutsL1->SetMaxDCAToVertexZ(3.);
+ esdTrackCutsL1->SetAcceptKinkDaughters(kFALSE);
+ esdTrackCutsL1->SetRequireITSRefit(kTRUE);
+ esdTrackCutsL1->SetRequireITSStandAlone(kTRUE);
+
+ //cuts for TPC tracks
+ AliESDtrackCuts* esdTrackCutsL2 = new AliESDtrackCuts("AliESDtrackCuts2","TPC");
+ esdTrackCutsL2->SetRequireTPCRefit(kFALSE);
+ esdTrackCutsL2->SetAcceptKinkDaughters(kFALSE);
+ //jacek's cuts:
+ esdTrackCutsL2->SetMinNClustersTPC(70);
+ // cut on max ncl=160 in Task
+ esdTrackCutsL2->SetMaxDCAToVertexXY(3.);
+ esdTrackCutsL2->SetMaxDCAToVertexZ(3.);
+ esdTrackCutsL2->SetMaxChi2PerClusterTPC(3.999);
+ //cut minChi=0 in task
+ //esdTrackCutsL2->SetPRange(0.15,16); // not needed for QA
+ //esdTrackCutsL2->SetEtaRange(-0.8, 0.7999); // not needed for QA
+
+
+ task0->SetCuts(esdTrackCutsL0);
+ task1->SetCuts(esdTrackCutsL1);
+ task2->SetCuts(esdTrackCutsL2);
+
+ mgr->AddTask(task0);
+ mgr->AddTask(task1);
+ mgr->AddTask(task2);
+
+ AliAnalysisDataContainer *cout0 = 0;
+ AliAnalysisDataContainer *cout1 = 0;
+ AliAnalysisDataContainer *cout2 = 0;
+
+ if(runNumber>0){
+ cout0 = mgr->CreateContainer("QAsymHists_Global",TList::Class(),
+ AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+ cout1 = mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
+ AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+ cout2 = mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
+ AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+ }
+
+ else{
+ cout0 = mgr->CreateContainer("QAsymHists_Global",TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+ cout1 = mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+ cout2 = mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+ }
+
+
+ mgr->ConnectInput (task0, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectInput (task1, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectInput (task2, 0, mgr->GetCommonInputContainer());
+
+ mgr->ConnectOutput (task0, 0, mgr->GetCommonOutputContainer());
+ mgr->ConnectOutput (task1, 0, mgr->GetCommonOutputContainer());
+ mgr->ConnectOutput (task2, 0, mgr->GetCommonOutputContainer());
+
+ mgr->ConnectOutput (task0, 1, cout0);
+ mgr->ConnectOutput (task1, 1, cout1);
+ mgr->ConnectOutput (task2, 1, cout2);
+
+ return task0;
+
+}
+
+