@tableofcontents
Firstly, clone repository in your workspace
git clone https://github.com/ctolon/PythonInterfaceOOP.git
Before you start, you need to do the installations in the readme file
P.S. Don't forget to install the O2 enviroment before running the scripts
Ex. alienv enter O2Physics/latest,QualityControl/latest
Assuming you have installed the argcomplete package, don't forget to source the bash script again in your O2 enviroment.
source argcomplete.sh
If you don't have time to read the documentation follow these steps:
For Linux Based System:
alienv enter O2Physics/latest,QualityControl/latest(Load Your alienv, if you want you can install lxplus version without using QC)pip install argcompleteandpip3 install argcompletesource argcomplete.sh
For MacOS Based System:
brew install bashalienv enter O2Physics/latest,QualityControl/latest(Load Your alienv, if you want you can install lxplus version without using QC)pip install argcompleteandpip3 install argcompleteexec bash(temporary bash shell)source argcomplete.sh
if not works:
sudo chsh -s /bin/bash <username>source argcomplete.sh
if you used the command sudo chsh -s /bin/bash <username> after you are done with the scripts (It converts your system shell zsh to bash):
sudo chsh -s /bin/zsh <username>(It converts your system shell bash to zsh)
if you used the command exec bash you don't need to do anything.
You can Found MC Datas, pre-made JSON config files and DQ Skimmed datas for tutorial at: Click Here password: DQ
Create a new folder in pythonInterfaceOOP directory with mkdir Datas and move the downloaded datas here.
You can found Real Data for pp at : Click Here
You can found Real Data for PbPb at : Click Here
or Click Here
P.S: Dont forget the change name of AO2D.root files for interface and Move this datas to you previously create Datas Folder.
For PbPb Data : AO2D.root to AO2D_PbPbDataRun2_LHC15o.root
For pp Data : AO2D.root to AO2D_ppDataRun3_LHC22c.root
If you downloaded these datasets, you can start.
- For MC:
| Workflow | Dataset | Skimmed | Process | Type | Col Syst |
|---|---|---|---|---|---|
tableMakerMC |
LHC21i3d2 |
No |
MuonOnlyWithCovOnlyBCs |
J/ψ → μ+ μ− | pp |
dqEfficiency |
LHC21i3d2 |
Yes |
DecayToMuMu |
J/ψ → μ+ μ− | pp |
tableMakerMC |
LHC21i3b |
No |
BarrelOnlyOnlyBCs |
J/ψ → e+ e− | pp |
dqEfficiency |
LHC21i3b |
Yes |
DecayToEE |
J/ψ → e+ e− | pp |
tableMakerMC |
LHC21i3f2 |
No |
BarrelOnlyOnlyBCs |
hB → J/ψ + X, J/ψ → e+ e− | pp |
dqEfficiency |
LHC21i3f2 |
Yes |
DecayToEE |
hB → J/ψ + X, J/ψ → e+ e− | pp |
- For Data:
| Workflow | Dataset | Skimmed | Process | Selection | Col Syst |
|---|---|---|---|---|---|
tableMaker |
LHC15o |
No |
BarrelOnlyWithCentOnlyBCs |
J/ψ → e+ e− | PbPb |
tableReader |
LHC15o |
Yes |
DecayToEE |
J/ψ → e+ e− | PbPb |
tableMaker |
LHC15o |
No |
FullWithCentBarrelOnlyWithQvectorOnlyBCs |
J/ψ → e+ e− | PbPb |
tableReader |
LHC15o |
Yes |
VnDecayToEE |
J/ψ → e+ e− | PbPb |
dqFlow |
LHC15o |
No |
- | - | PbPb |
v0Selector |
LHC15o |
No |
- | - | PbPb |
tableMaker |
LHC22c |
No |
MuonOnlyWithCovOnlyBCs |
J/ψ → μ+ μ− | pp |
tableReader |
LHC22c |
Yes |
DecayToMuMuVertexing |
J/ψ → μ+ μ− | pp |
filterPP |
fwdprompt |
No |
eventSelection barrelTrackSelection muonSelection |
All Events | pp |
| Workflow | Dataset | Process | Type | Col Syst |
|---|---|---|---|---|
dqEfficiency |
AO2D_Bc100 |
DecayToMuMuVertexingdileptonTrackDimuonMuonSelection |
Bc → J/ψ → (μ+ μ−) + μ | pp |
tableReader |
LHC15o |
DecayToEEdileptonHadron |
dileptonhadron |
PbPb |
TO BE ADDED IN TUTORIALS (Not Prepared Yet):
| Workflow | Dataset | Process | Type | Col Syst |
|---|---|---|---|---|
dqEfficiency |
AO2D_Bplus |
DecayToMuMuVertexingdileptonTrackDimuonMuonSelection |
B+ → J/ψ + K, → J/ψ → e+ e− | pp |
Reduced DQ skimmed data list created with tableMaker/tableMakerMC:
| Data | Dataset | Used Workflow | Selected Processes (from tableMaker) |
|---|---|---|---|
reducedAod_ppMC_LHC21i3d2.root |
LHC21i3d2 |
tableMakerMC |
MuonOnlyWithCovOnlyBCs |
reducedAod_ppMC_LHC21i3b.root |
LHC21i3b |
tableMakerMC |
BarrelOnlyOnlyBCs |
reducedAod_ppMC_LHC21i3f2.root |
LHC21i3f2 |
tableMakerMC |
BarrelOnlyOnlyBCs |
reducedAod_ppMC_Bc100.root |
Bc100 |
tableMakerMC |
MuonOnlyWithCovOnlyBCs |
reducedAod_PbPbData_LHC15o.root |
LHC15o |
tableMaker |
BarrelOnlyWithCentOnlyBCs |
reducedAod_PbPbData_LHC15o_Flow.root |
LHC15o |
tableMaker |
FullWithCentBarrelOnlyWithQvectorOnlyBCs |
reducedAod_PbPbData_LHC15o_dileptonHadron.root |
LHC15o |
tableMaker |
BarrelOnlyOnlyBCs |
reducedAod_ppData_LHC22c.root |
LHC22c |
tableMaker |
MuonOnlyWithCovOnlyBCs |
Reduced DQ Dileptons skimmed data list For Dilepton Analysis (dilepton-track and dilepton-hadron) created with tableReader/dqEfficiency:
| Data | Dataset | Used Workflow | Selected Processes (from tableMaker) |
|---|---|---|---|
dileptonAOD_ppMC_BC100.root |
Bc100 |
dqEfficiency |
MuonOnlyWithCovOnlyBCs |
dileptonAOD_PbPbData_LHC15o_dileptonHadron.root |
LHC15o |
tableReader |
BarrelOnlyOnlyBCs |
Config JSON list created with Scripts.
Common JSON configs:
| Config | For | Description |
|---|---|---|
configAnalysis_LHC21i3b_MC.json |
MCRun3 |
Run dqEfficiency on LHC21i3b Simulation → reducedAod_ppMC_LHC21i3b.root |
configAnalysis_LHC21i3d2_MC.json |
MCRun3 |
Run dqEfficiency on LHC21i3d2 Simulation → reducedAod_ppMC_LHC21i3d2.root |
configAnalysis_LHC21i3f2_MC.json |
MCRun3 |
Run dqEfficiency on LHC21i3f2 Simulation → reducedAod_ppMC_LHC21i3f2.root |
ConfigAnalysis_LHC15o_Data.json |
DataRun2 |
Run tableReader on LHC15o Data without flow → reducedAod_PbPbData_LHC15o.root |
ConfigAnalysis_LHC15o_Flow_Data.json |
DataRun2 |
Run tableReader on LHC15o Data for Flow Analysis → reducedAod_PbPbData_LHC15o_Flow.root |
ConfigAnalysis_LHC22c_Data.json |
DataRun3 |
Run tableReader on LHC22c Data → reducedAod_PbPbData_LHC15o.root |
configTableMaker_LHC21i3b_MCRun3.json |
MCRun3 |
Run tableMakerMC on LHC21i3b Simulation → AO2D_ppMCRun3_LHC21i3b.root |
configTableMaker_LHC21i3d2_MCRun3.json |
MCRun3 |
Run tableMakerMC on LHC21i3d2 Simulation → AO2D_ppMCRun3_LHC21i3d2.root |
configTableMaker_LHC21i3f2_MCRun3.json |
MCRun3 |
Run tableMakerMC on LHC21i3f2 Simulation → AO2D_ppMCRun3_LHC21i3f2.root |
ConfigTableMaker_LHC15o_DataRun2.json |
DataRun2 |
Run tableMaker on LHC15o without Flow → AO2D_PbPbDataRun2_LHC15o.root |
ConfigTableMaker_LHC15o_Flow_DataRun2.json |
DataRun2 |
Run tableMaker on LHC15o For Flow Analysis → AO2D_PbPbDataRun2_LHC15o.root |
ConfigTableMaker_LHC22c_DataRun3.json |
DataRun3 |
Run tableMaker on LHC22c Data → AO2D_ppDataRun3_LHC22c.root |
configV0Selector_LHC15o_DataRun2.json |
DataRun2 |
Run v0Selector on LHC15o Data → AO2D_PbPbDataRun2_LHC15o.root |
JSON configs for Single Workflows:
| Config | For | Description |
|---|---|---|
configFilterPP_fwdprompt_Run3.json |
MCRun3 |
Run filterPP on fwdprompt → AO2D_fwdprompt.root |
configFlow_LHC15o_DataRun2.json |
DataRun2 |
Run dqFlow on LHC15o Data → AO2D_PbPbDataRun2_LHC15o.root |
configV0Selector_LHC15o_DataRun2.json |
DataRun2 |
Run v0Selector on LHC15o Data → AO2D_PbPbDataRun2_LHC15o.root |
JSON configs for dilepton-hadron and dilepton-track analysis:
| Config | For | Description |
|---|---|---|
configTableMaker_Bc100_MCRun3.json |
MCRun3 |
Run tableMakerMC on Bc100 Simulation for prepare dilepton-track analysis → AO2D_Bc100.root |
configAnalysis_Bc100_MC.json |
MCRun3 |
Run dqEfficiency on Bc100 Simulation for prepare skimmed dileptons output → reducedAod_ppMC_Bc100.root |
configAnalysisDilepton_Bc100_MC.json |
MCRun3 |
Run dqEfficiency on Bc100 Simulation for dilepton analysis → dileptonAOD_ppMC_BC100.root |
configTableMaker_LHC15o_DileptonHadron_DataRun2.json |
DataRun2 |
Run tableMaker on LHC15o Data for prepare dilepton-hadron analysis → AO2D_PbPbDataRun2_LHC15o.root |
configAnalysis_LHC15o_dileptonHadron_Data.json |
DataRun2 |
Run tableReader on LHC15o Data for prepare skimmed dileptons output → reducedAod_PbPbData_LHC15o_dileptonHadron.root |
configAnalysisDilepton_LHC15o_dileptonHadron_Data.json |
DataRun2 |
Run tableReader on LHC15o Data for dilepton analysis → reducedAod_PbPbData_LHC15o_dileptonHadron.root |
P.S. Root files are inputs for JSON configs
Command To Run:
python3 runTableMakerMC.py configs/configTableMakerMCRun3.json -runMC --aod Datas/AO2D_ppMCRun3_LHC21i3d2.root --process MuonOnlyWithCov OnlyBCs --syst pp --cfgMCsignals muFromJpsi Jpsi muon --cfgMuonCuts muonQualityCuts muonTightQualityCutsForTests --add_track_prop --debug debug --logFileYou need to produce reducedAod.root file with tableMakerMC in previous step.
Command To Run:
python3 runDQEfficiency.py configs/configAnalysisMC.json --aod reducedAod.root --analysis muonSelection eventSelection sameEventPairing --process DecayToMuMu DecayToMuMuVertexing --cfgQA true --cfgMuonCuts muonQualityCuts muonTightQualityCutsForTests --cfgMuonMCSignals muFromJpsi --cfgBarrelMCGenSignals Jpsi --cfgBarrelMCRecSignals mumuFromJpsi dimuon --debug debug --logFileCommand To Run:
python3 runTableMakerMC.py configs/configTableMakerMCRun3.json -runMC --aod Datas/AO2D_ppMCRun3_LHC21i3b.root --process OnlyBCs BarrelOnly --syst pp --cfgBarrelTrackCuts jpsiO2MCdebugCuts --cfgMCsignals electronPrimary eFromJpsi Jpsi LMeeLF LMeeLFQ --debug debug --logFileYou need to produce reducedAod.root file with tableMakerMC in previous step.
Command To Run:
python3 runDQEfficiency.py configs/configAnalysisMC.json --aod reducedAod.root --analysis trackSelection eventSelection sameEventPairing --process DecayToEE --cfgQA true --cfgBarrelMCGenSignals Jpsi --cfgBarrelMCRecSignals eeFromJpsi dielectron --cfgTrackCuts jpsiO2MCdebugCuts --cfgTrackMCSignals eFromJpsi --debug debug --logFileCommand To Run:
python3 runTableMakerMC.py configs/configTableMakerMCRun3.json -runMC --aod Datas/AO2D_ppMCRun3_LHC21i3f2.root --process OnlyBCs BarrelOnly --syst pp --cfgBarrelTrackCuts jpsiO2MCdebugCuts --cfgMCsignals electronPrimary eFromJpsi eFromNonpromptJpsi eFromLMeeLF LMeeLF Jpsi everythingFromBeauty --debug debug --logFileYou need to produce reducedAod.root file with tableMakerMC in previous step.
Command To Run:
python3 runDQEfficiency.py configs/configAnalysisMC.json --aod reducedAod.root --analysis trackSelection eventSelection sameEventPairing --process DecayToEE --cfgQA true --cfgBarrelMCGenSignals Jpsi nonPromptJpsi --cfgBarrelMCRecSignals eeFromJpsi dielectron --cfgTrackCuts jpsiO2MCdebugCuts --cfgTrackMCSignals eFromJpsi eFromNonpromptJpsi --debug debug --logFileCommand To Run:
python3 runTableMaker.py configs/configTableMakerDataRun2.json -runData --aod Datas/AO2D_PbPbDataRun2_LHC15o.root --process OnlyBCs BarrelOnlyWithCent --syst PbPb --cfgWithQA true --est Run2V0M --cfgBarrelTrackCuts jpsiPID1 jpsiPID2 --add_fdd_conv --debug debug --logFileYou need to produce reducedAod.root file with tableMaker in previous step.
Command To Run:
python3 runTableReader.py configs/configAnalysisData.json --aod reducedAod.root --analysis eventSelection trackSelection eventMixing sameEventPairing --process DecayToEE --cfgQA true --cfgTrackCuts jpsiPID1 jpsiPID2 --debug debug --logFileCommand To Run:
python3 runTableMaker.py configs/configTableMakerDataRun2.json -runData --aod Datas/AO2D_PbPbDataRun2_LHC15o.root --process OnlyBCs FullWithCent BarrelOnlyWithQvector --syst PbPb --cfgWithQA true --est Run2V0M --cfgBarrelTrackCuts jpsiPID1 jpsiPID2 --add_fdd_conv --debug debug --logFileYou need to produce reducedAod.root file with tableMaker in previous step.
Command To Run:
python3 runTableReader.py configs/configAnalysisData.json --aod reducedAod.root --analysis eventSelection trackSelection sameEventPairing --process VnDecayToEE --cfgQA true --cfgTrackCuts jpsiPID1 jpsiPID2 --debug debug --logFileCommand To Run:
python3 runDQFlow.py configs/configFlowDataRun2.json --aod Datas/AO2D_PbPbDataRun2_LHC15o.root --syst PbPb --cfgWithQA true --est Run2V0M --FT0 Run2 --cfgBarrelTrackCuts jpsiPID1 jpsiPID2 --cfgMuonCuts muonQualityCuts muonTightQualityCutsForTests --add_fdd_conv --debug debug --logFileCommand To Run:
python3 runV0selector.py configs/configV0SelectorDataRun2.json --aod Datas/AO2D_PbPbDataRun2_LHC15o.root --add_fdd_conv --add_weakdecay_indCommand To Run:
python3 runTableMaker.py configs/configTableMakerDataRun3.json -runData --aod Datas/AO2D_ppDataRun3_LHC22c.root --process OnlyBCs MuonOnlyWithCov --syst pp --cfgWithQA true --cfgMuonsCuts muonQualityCuts --cfgMuonCuts muonQualityCuts muonTightQualityCutsForTests --add_track_prop --debug debug --logFileYou need to produce reducedAod.root file with tableMaker in previous step.
Command To Run:
python3 runTableReader.py configs/configAnalysisData.json --aod reducedAod.root --analysis eventSelection muonSelection sameEventPairing --process DecayToMuMuVertexing --cfgQA true --cfgMuonCuts muonQualityCuts muonTightQualityCutsForTests --cfgAddSEPHistogram dimuon vertexing-forward flow-dimuon --debug debug --logFileIMPORTANT NOTE: Here we used the cfgAddSEPHistogram argument (--cfgAddSEPHistogram dimuon vertexing-forward flow-dimuon) to define same event pairing histograms. This is because by default, dielectron decay histograms for same event pairing are defined in the configAnalysisData.json config file, and since we are doing dimuon analysis here, we replaced these defined (vertexing,flow) histogram configurations with the configuration for dimuon.
Command To Run:
python3 runFilterPP.py configs/configFilterPPDataRun3.json --aod Datas/AO2D_fwdprompt.root --process barrelTrackSelection eventSelection muonSelection --syst pp --cfgBarrelTrackCuts jpsiO2MCdebugCuts jpsiPID2 --cfgBarrelSels jpsiO2MCdebugCuts:pairNoCut:1 jpsiPID2::1 --cfgMuonsCuts muonLowPt muonHighPt muonLowPt --cfgMuonSels muonLowPt::1 muonHighPt::1 muonLowPt:pairUpsilon:1 --debug debug --logFileP.S. Cuts Needs to optimized.
This section includes analysis with non-standard workflows in DQ workflows. These analyzes are carried out in 3 stages:
-
DQ skimmed data is created with TableMaker/tableMakerMC (input: AO2D.root, output: AnalysisResults.root)
-
DQ skimmed extra dilepton tables are created with tableReader/dqEfficiency and with this way new DQ skimmed data with extra dilepton tables are created on dileptonAod.root, Normally reducedAod.root that does not contains dilepton tables (input : reducedAod.root, output: AnalysisResults.root and dileptonAod.root)
-
With tableReader/dqEfficiency, analysis is performed on DQ skimmed dilepton data created earlier (input: dileptonAod.root and output: AnalysisResults.root)
First Command To Run:
python3 runTableMakerMC.py configs/configTableMakerMCRun3.json -runMC --aod Datas/AO2D_Bc100.root --process MuonOnlyWithCov OnlyBCs --syst pp --cfgMCsignals Jpsi Bc anyBeautyHadron --cfgMuonCuts matchedGlobal --cfgMuonLowPt 0.0 --debug debug --logFileSecond Command To Run:
python3 runDQEfficiency.py configs/configAnalysisMC.json --aod reducedAod.root --analysis eventSelection muonSelection sameEventPairing --process DecayToMuMuVertexing --cfgQA true --cfgMuonCuts matchedGlobal --cfgMuonMCSignals muon muFromJpsi muFromBc dimuon --cfgBarrelMCGenSignals Jpsi --cfgBarrelMCRecSignals mumuFromJpsi --cfgBarrelDileptonMCRecSignals mumuFromJpsiFromBc mumumuFromBc --cfgBarrelDileptonMCGenSignals Jpsi --debug debug --logFileThird Command To Run:
python3 runDQEfficiency.py configs/configAnalysisMC.json --aod dileptonAOD.root --analysis eventSelection muonSelection dileptonTrackDimuonMuonSelection sameEventPairing --process DecayToMuMuVertexing --cfgMuonCuts matchedGlobal --cfgMuonMCSignals muon muFromJpsi muFromBc dimuon --cfgBarrelMCGenSignals Jpsi --cfgBarrelMCRecSignals mumuFromJpsi --cfgBarrelDileptonMCRecSignals mumuFromJpsiFromBc mumumuFromBc --cfgBarrelDileptonMCGenSignals Jpsi --debug debug --logFileFirst Command To Run:
python3 runTableMaker.py configs/configTableMakerDataRun2.json -runData --aod Datas/AO2D_PbPbDataRun2_LHC15o.root --process OnlyBCs BarrelOnly --syst PbPb --cfgWithQA true --est Run2V0M --cfgBarrelTrackCuts jpsiPID1 jpsiPID2 --add_fdd_conv --debug debug --logFileSecond Command To Run:
python3 runTableReader.py configs/configAnalysisData.json --aod reducedAod.root --analysis eventSelection trackSelection sameEventPairing --process DecayToEE --cfgQA true --cfgTrackCuts jpsiPID1 jpsiPID2 --debug debug --logFileThird Command To Run:
python3 runTableReader.py configs/configAnalysisData.json --aod dileptonAOD.root --analysis eventSelection trackSelection sameEventPairing dileptonHadron --process DecayToEE --cfgQA true --cfgTrackCuts jpsiPID1 jpsiPID2 --debug debug --logFile← Go back to Instructions For Python Scripts | ↑ Go to the Table of Content ↑ | Continue to Developer Guide →