J/ψJ/\psi Production in Jets

From IDEA to PAPER.

Repository for references, analysis codes, useful scripts and related discussions.

Software: AliPhysics@ROOT6

Main environment: AliEn World-wide Computing Grid

Local: R710.star.ustc.edu.cn (Dual-E5520 + 16* Dual-E5504)

Development and post-processing are performed on local environment (vAN-20190328_ROOT6). But for alien, all jobs would run on latest version after debug.

For better display of this document, please install browser extension MathJax Plugin for Github (Chrome) or try this external page (temp and not latest). The best solution is to open preview in VS Code with Markdown Preview Enhanced.

Author: Yìtāo WÚ

Contents

Resource

Software: AliSW@GitHub | GitLab | AliDoc | Offline Database (OADB, OCDB) | ROOT | HEPforge |

Documents: Twiki | Public & Analysis Note | ALICE Offline | ALICE Official |

Service: AliEn | AliMonitor | Glance | JIRA | Vidyo | CERN Account | CERN Service | CA | CERN Mail | e-groups | CERNBox | SWAN |

Tutorial:

Conference & Meeting: ALICE Conference |

Publication: InspierHEP | CERN Document Server | HEPData | Google Scholar | Microsoft Academic | SCImago Journal Rank |

Background & Motivation

To understood the J/ψJ/\psi production mechanism, and explain the lack of observed polarization in high pTp_{T} range. Previous results from LHCb and CMS are disagree with NRQCD predictions implemented by Pythia8.

Result_LHCb
Result_CMS

Reference

  1. Baumgart, Matthew, et al. "Probing quarkonium production mechanisms with jet substructure." JHEP 1411 (2014) 003 [INSPIRE]
  2. LHCb Collaboration, "Study of J/ψJ/\psi Production in Jets", Phys.Rev.Lett. 118 (2017) no.19, 192001 [INSPIRE]
  3. Kang, Zhong-Bo, et al. "J/ψJ/\psi production and polarization within a jet." Phys.Rev.Lett. 119 (2017) no.3, 032001. [INSPIRE]
  4. Bain, Reggie, et al. "NRQCD Confronts LHCb Data on Quarkonium Production within Jets." Phys.Rev.Lett. 119 (2017) no.3, 032002. [INSPIRE]
  5. CMS Collaboration, "Production of prompt and nonprompt J/ψJ/\psi mesons in jets in pp collisions at s=5.02 TeV\sqrt{s}=5.02~TeV", CMS-PAS-HIN-18-012, [CDS]
  6. Dai, Lin, et al. "Quarkonium Polarization and the Long Distance Matrix Elements Hierarchies using Jet Substructure" Phys.Rev. D96 (2017) no.3, 036020 [INSPIRE]
  7. Dai, Lin, et al. "Heavy quark jet fragmentation." JHEP 1809 (2018) 109 [INSPIRE]
  8. Dai, Lin. "Applications of QCD Effective Theories to the Physics of Jets and Quarkonium Production." PhD Diss. University of Pittsburgh, 2018. [PDF]
  9. Konrad Tywoniuk, "Theory Overview - J/psi production in jets" ALICE Jpsi2ee PAG workshop, April 2019 [SLIDES]

Physical Object

The jet fragmentation function z(J/ψ)z(J/\psi), which is the pTp_{T} fraction carried by J/ψJ/\psi in jets.

In proton-proton collision at s=13 TeV\sqrt{s}=13~TeV, J/ψJ/\psi mesons are reconstructed using their dielectron channel in central barrel. The dielectron events were selected offline with the L0 trigger system, requiring one leg in EMCal/DCal and exceed the L1 energy threshold. Other analysis cuts deployed for electron identification will be presented in following sections. Prompt and non-prompt J/ψJ/\psi mesons are seperated by pesudo-proper decay length.

Jets are clustered using the anti-kTk_{T} algorithm from charged tracks, with R=0.2, which provides by fastjet package.

  1. [AN-646] "J/ψ measurements in pp collisions at s√ = 13 TeV using EMCal-triggered events with ALICE at LHC", Cristiane Jahnke (Munich EC, DE), 29 June, 2017
  2. [AN-876] "Inclusive Jpsi production cross-section in pp collisions at 13TeV", Ingrid Mckibben Lofnes (UBergen, NO), 19 March, 2019
  3. [AN-850] "Multiplicity dependence of charged jet production in pp collisions at 13 TeV", Yongzhen Hou (CCNU, CN), 21 September, 2018
  4. [AN-746] "Inclusive J/psi - hadron correlations at mid-rapidty in MB and high multiplicity pp collisions at sqrt(s) = 13 TeV", Lucas Altenkamper (UBergen, NO), 26 April, 2018

Datasets

ALICE Run2 pp 13TeV (with EMC), 2016-2018

All datasets used is collected in Datasets/DQ_pp_AOD.C, which can be executed and accessed like DATASETS["16l_pass1"]. If not in LEGO train, the number of jobs will be limited under 1500, about 33 runs. Original run lists from DPG is stored under Datasets/DATA/.

Run Period MB Muon EMCAL N runs INT7 EMCEGA EG1 EG2 DG1 DG2 Nano
18p 64,723,976 38,946,331 8,206,052 66
18o 27,495,955 14,997,718 3,506,262 26
18n* 3,835,344 21,207 2
18m 134,624,309 60,378,259 15,669,592 142
18l 40,366,370 16,800,730 4,118,681 39
18k 8,764,716 36,793,499 906,769 10
18j 96,797 43,361 9,597 1
18i* 55,845,385 553,722 7
18h 4,251,665 1,834,724 434,065 2
18g* 1,508,180 1
18f 44,009,568 18,923,929 4,653,741 46
18e 52,440,125 21,328,980 6,170,463 38
18d 28,079,632 11,969,409 3,317,779 28
18c* 267,232,152 14,312,085 46
18b* 167,363,075 2,107,216 22
17r 25,356,149 16,306,258 4,554,303 27
17o 101,301,254 61,352,135 17,350,119 128
17m* 97,253,493 15,004,475 4,932,360 93
17l 66,971,443 41,517,736 11,726,035 105
17k 89,488,618 38,583,640 11,652,619 93
17j* 41,314,510 163,093 10
17i* 54,162,665 14,422,733 4,209,950 56
17h* 90,126,837 16,633,082 5,610,223 63
17g* 110,598,542 1,620,926 26
17f* 12,112,114 106,809 3,583 5
17c* 1,962,343 601 4
16p 23,175,087 13,077,528 2,570,124 39
16o* 9,397,646 3,195,337 740,813 17
16l 30,687,176 17,153,082 18,057,636 51
16k 105,446,176 47,974,758 17,241,173 123
16j 53,638,211 14,260,378 3,581,261 33
16i 36,566,073 12,227,075 2,272,121 14
16h* 50,404,063 11,696,888 35
16g* 19,103,014 2,450,982 8
Total 1,619,516,002 438,267,301 124,113,415 1,127

Luminosity and event normalization

Luminosity is used to normalize the measured spectra for cross section estimation.

d2σdpTdη=1LintNphys.obj.ΔpTΔη\frac{d^{2}\sigma}{dp_{T}d\eta}=\frac{1}{\mathscr{L}_{int}}\frac{N_{phys.obj.}}{\Delta p_{T}\Delta \eta}

The determinination of the integrated luminosity is based on the measurement of a reference cross section, σV0AND\sigma_{V0AND}, obtained from a van-der-Meer scan. From result in 2015: σV0AND=57.8 mb±5% (sys.)\sigma_{V0AND}=57.8~mb\pm5\%~(sys.), while L=NV0ANDcorr./σV0AND\mathscr{L}=N_{V0AND}^{corr.}/\sigma_{V0AND}.

The number of events NV0ANDcorr.N_{V0AND}^{corr.} includes events with and without a reconstructed vertex within the vertex requirement z<10 cm|z|<10~cm. We assume the events without a reconstructed vertex follow the same vertex distribution as reconstructed events, so the event number can be estimated from the fraction fzf_{z} (with Gaussian function).

Ncorr.=fzNsel.=NVtxZ<10cmNVtxNsel.N_{corr.}=f_{z}\cdot N_{sel.}=\frac{N_{|VtxZ|<10cm}}{N_{Vtx}}\cdot N_{sel.}

QA

To check the status and performance of detectors and the agreement between data and MC. Level: Run, Event, Track, Detector, PID, Phys. Objects

Run-wise

Run-wise QA is generated from histograms of event, track, cluster and other levels run-by-run. Average value of variables and event counts are frequently used indexes. If possible, use THnSparse to store variables for the convenience of post plotting.

Parameter Description Method
NeventsN_{events} Number and fraction of events in triggers and event cuts.
NˉGood tracks\bar{N}_{Good~tracks} Average number of good tracks
NˉSPDtracklets\bar{N}_{SPDtracklets} Average number of SPD tracklets
ZˉVtx,σ(Z)Vtx\bar{Z}_{Vtx}, \sigma(Z)_{Vtx} Mean and sigma value of vertex Z or (X/Y/XY)
NˉcontributorsVtx\bar{N}_{contributors}^{Vtx} Average number of vertex contributors
<Multiplicity><Multiplicity> Average value of multiplicity, includes VZERO amp.
<Qn><Q_{n}> Average value of event plane Q value
Nˉclusters\bar{N}_{clusters} Average number of calo clusters
Cluster ηCluster~\eta-ϕ map\phi~map Identify bad cells/RCU
BadCellIDBadCell_{ID} Dead or Hot/Warm cells
<VARtracks><VAR_{tracks}> Average value or distribution of selected tracks after selection, basic and PID variables

Event

Trigger and event cut overview histograms, like MB, Pileup, good, ZVtx< 10cm,η<0.9Z_{Vtx}<~10cm, \eta<0.9, ratio of different trigger or cut definition.

Statistics of event selection (vs triggers, and in run-wise): Physics Selection (PS), trigger, event cuts, track cuts (no tracks), filtered in nano AOD (with candidates of physics objects) and corresponding reject reasons.

Event ID = Nbunchcrossing+Norbit×3564+Nperiod×0xFFFFFF×3564N_{bunch-crossing}+N_{orbit}\times3564+N_{period}\times\rm{0xFFFFFF}\times3564

For offline trigger,use AliAnalysisTaskMultiDielectron::SetTriggerMask instead of AliAnalysisTaskSE::SelectCollisionCandidates, if event cuts/filter existed. And trigger class is selected by AliAnalysisTaskMultiDielectron::SetFiredTriggerName. (PWGDQ/dielectron ONLY)

ALICE Offline Triggers

from AliVEvent.h)

EOfflineTriggerTypes BIT(N) Description
kMB 0 Minimum bias trigger in PbPb 2010-11
kINT1 0 V0A | V0C | SPD minimum bias trigger
kINT7 1 V0AND minimum bias trigger (MB for pp)
kMUON 2 Single muon trigger in pp2010-11, INT1 suite
kHighMult 3 High-multiplicity SPD trigger
kHighMultSPD 3 High-multiplicity SPD trigger
kEMC1 4 EMCAL trigger in pp2011, INT1 suite
kCINT5 5 V0OR minimum bias trigger
kINT5 5 V0OR minimum bias trigger
kCMUS5 6 Single muon trigger, INT5 suite
kMUSPB 6 Single muon trigger in PbPb 2011
kINT7inMUON 6 INT7 in MUON or MUFAST cluster
kMuonSingleHighPt7 7 Single muon high-pt, INT7 suite
kMUSH7 7 Single muon high-pt, INT7 suite
kMUSHPB 7 Single muon high-pt in PbPb 2011
kMuonLikeLowPt7 8 Like-sign dimuon low-pt, INT7 suite
kMUL7 8 Like-sign dimuon low-pt, INT7 suite
kMuonLikePB 8 Like-sign dimuon low-pt in PbPb 2011
kMuonUnlikeLowPt7 9 Unlike-sign dimuon low-pt, INT7 suite
kMUU7 9 Unlike-sign dimuon low-pt, INT7 suite
kMuonUnlikePB 9 Unlike-sign dimuon low-pt in PbPb 2011
kEMC7 10 EMCAL/DCAL L0 trigger, INT7 suite
kEMC8 10 EMCAL/DCAL L0 trigger, INT8 suite
kMUS7 11 Single muon low-pt, INT7 suite
kMuonSingleLowPt7 11 Single muon low-pt, INT7 suite
kPHI1 12 PHOS L0 trigger in pp2011, INT1 suite
kPHI7 13 PHOS trigger, INT7 suite
kPHI8 13 PHOS trigger, INT8 suite
kPHOSPb 13 PHOS trigger in PbPb 2011
kEMCEJE 14 EMCAL/DCAL L1 jet trigger
kEMCEGA 15 EMCAL/DCAL L1 gamma trigger, including high and low trigger classes
kHighMultV0 16 High-multiplicity V0 trigger
kCentral 16 Central trigger in PbPb 2011
kSemiCentral 17 Semicentral trigger in PbPb 2011
kDG 18 Double gap diffractive
kDG5 18 Double gap diffractive
kZED 19 ZDC electromagnetic dissociation
kSPI7 20 Power interaction trigger
kSPI 20 Power interaction trigger
kINT8 21 0TVX trigger
kMuonSingleLowPt8 22 Single muon low-pt, INT8 suite
kMuonSingleHighPt8 23 Single muon high-pt, INT8 suite
kMuonLikeLowPt8 24 Like-sign dimuon low-pt, INT8 suite
kMuonUnlikeLowPt8 25 Unlike-sign dimuon low-pt, INT8 suite
kMuonUnlikeLowPt0 26 Unlike-sign dimuon low-pt, no additional L0 requirement
kUserDefined 27 Set when custom trigger classes are set in AliPhysicsSelection
kTRD 28 TRD trigger
kMuonCalo 29 Muon-calo triggers
kCaloOnly 29 MB, EMCAL and PHOS triggers in CALO or CALOFAST cluster
Bits 30 and above are reserved for FLAGS
kFastOnly 30 The fast cluster fired. This bit is set in to addition another trigger bit, e.g. kMB
kAny 0xffffffff to accept any defined trigger
kAnyINT kMB | kINT7 | kINT5 | kINT8 | kSPI7. to accept any interaction (aka minimum bias) trigger
ALICE Trigger Classes

from ALICE Trigger Coordination and CTP

Trigger Class = Trigger Condition + Trigger Cluster + Trigger Vetoes
Typical trigger class name:
CEMC7EGA-B-NOPF-CENTNOTRD
[Decriptor]-[BC_mask]-[PF_protection]-[Cluster].

AOD tree structure

from AliAODEvent.h

AOD (Analysis Object Data) is skimmed data for higher-level analysis, conveted from ESD by AliAnalysisTaskESDfilter.

AODListIndex_t Name Description
kAODHeader header Event meta information, such as run number, magnetic field, diamond, trigger, etc.
kAODTracks tracks Charged tracks array
kAODVertices vertices Vertex array
kAODv0 v0s
kAODcascade cascades
kAODTracklets tracklets SPD tracklets
kAODJets jets
kAODEmcalCells emcalCells
kAODPhosCells phosCells
kAODCaloClusters caloClusters EMCal, DCal, PHOS clusters array
kAODEMCALTrigger emcalTrigger
kAODPHOSTrigger phosTrigger
kAODFmdClusters fmdClusters
kAODPmdClusters pmdClusters
kAODHMPIDrings hmpidRings
kAODDimuons dimuons
kAODTZERO AliAODTZERO
kAODVZERO AliAODVZERO
kAODZDC AliAODZDC
kAODAD AliAODAD
kTOFHeader AliTOFHeader Event time estimated by TOF
kAODTrdTracks trdTracks
- Forward
- ForwardEP
- CentralClusters
- MultSelection
- UserInfo

Variables on event level:

Parameter Description Std. Method Typical value Setup
ZVtxZ_{Vtx} Z postion (cm) of primary vertex aod->GetPrimaryVertex()->GetZ() 0.6±4.10.6\pm4.1 [-50,50] / 0.1
X position (cm) aod->GetPrimaryVertex()->GetX() 0.074±0.0060.074\pm0.006 [-0.5,0.5] / 0.001
Y position (cm) aod->GetPrimaryVertex()->GetY() 0.367±0.0040.367\pm0.004 [-0.5,0.5] / 0.001
Diamond Z position and width of the interaction point (IP) (cm) header->GetDiamondX()/GetSigma2DiamondX() 0.809±24.60.809\pm\sqrt{24.6} -
X position and width of the interaction point (IP) (cm) header->GetDiamondX()/GetSigma2DiamondX() 0.080±6.0e50.080\pm\sqrt{6.0e-5} -
Y position and width of the interaction point (IP) (cm) header->GetDiamondX()/GetSigma2DiamondX() 0.368±2.84e50.368\pm\sqrt{2.84e-5} -
NcontributorsVtxN_{contributors}^{Vtx} Number of primary vertex contributors Nˉ25\bar{N}\sim25 [0,500] / 1
NtrackletsN_{tracklets} Number of SPD tracklets (aod->GetMultiplicity()), by layers spd->GetNumberOfTracklets() Nˉ28\bar{N}\sim28 [0,200] / 1
ZVtxZ_{Vtx}-NtrackletsN_{tracklets} Correction needed for multiplicity analysis
NITSclustersN_{ITSclusters} Number of ITS clusters, by layers. spd->GetNumberOfITSClusters(lr) Nˉ540\bar{N}\sim540 [0,20000] / 1
SPD (pixel), layer 0 and 1 Nˉ110\bar{N}\sim110 [0,10000] / 1
SDD (drift), layer 2 and 3 Nˉ70\bar{N}\sim70 [0,3000] / 1
SSD (strip), layer 4 and 5 Nˉ80\bar{N}\sim80 [0,2000] / 1
NSPDfiredChipsN_{SPDfiredChips} Number of SPD fired chips (1200 in total), by layers. spd->GetNumberOfFiredChips(lr) Nˉ115\bar{N}\sim115 [0,1200] / 1
NtracksN_{tracks} Number of tracks w/ or w/o track cuts aod->GetNumberOfTracks() Nˉtotal640\bar{N}_{total}\sim640 [0,4000] / 1
AVZEROA_{VZERO} Amplitute of VZERO multiplicity decision as sum of 64 ch. (aod->GetVZEROData()) vzero->GetMultiplicity(ch) Aˉ95\bar{A}\sim95 [0,2000] / 1
V0A, channel 32 - 63 vzero->GetMultiplicityV0A(ch) Aˉ37\bar{A}\sim37 [0,2000] / 1
V0C, channel 0 - 31 vzero->GetMultiplicityV0A(ch) Aˉ58\bar{A}\sim58 [0,2000] / 1
Centrality Estimtor by multiplicity percentiles or impact factor AddTaskMultSelection.C
Q-vector Event plane framework AddTaskFlowQnVectorCorrections.C
NclusterN_{cluster} Number of calo clusters aod->GetNumberOfCaloClusters() Nˉ37\bar{N}\sim37 [0,500] / 1
EclusterE_{cluster} Energy distribution of calo clusters (GeV) calo->E() Eˉ0.5\bar{E}\sim0.5 [0,300] / 0.1

*spd is the instance of SPD tracklets AliAODTracklets from AliAODEvent::GetMultiplicity().
*Typical values and histogram setup are referred to [AN746] and fully AOD tree.

Track & TPC-ITS

Track selection and tracking parameters. The getter methods depend on the variable manager in PWG analysis framework, while methods listed blow are standard function from basic class in AliRoot/STEER.

Track types / status flag

from AliVTrack.h

Enum BIT(N) Description
kITSin 0
kITSout 1
kITSrefit 2
kITSpid 3
kTPCin 4
kTPCout 5
kTPCrefit 6
kTPCpid 7
kTRDin 8
kTRDout 9
kTRDrefit 10
kTRDpid 11
kTOFin 12
kTOFout 13
kTOFrefit 14
kTOFpid 15
kHMPIDout 16
kHMPIDpid 17
kEMCALmatch 18
kTRDbackup 19
kTOFmismatch 20
kPHOSmatch 21
kITSupg 22 flag that in the ITSupgrade reco
kSkipFriend 23 flag to skip friend storage
kGlobalMerge 24
kMultInV0 25 assumed to be belong to V0 in multiplicity estimates
kMultSec 26 assumed to be secondary (due to the DCA) in multiplicity estimates
kEmbedded 27 Is a track that has been embedded into the event
kITSpureSA 28
kTRDStop 29
kESDpid 30
kTIME 31
Others -
kTRDnPlanes 6 Not in BIT
kEMCALNoMatch -4096
kTOFBCNA -100
Track bits / pre-defined filter

from AliAODTrack.h, and the details is located in AliAnalysisTaskESDfilter and AliESDtrackCuts. As usual, the track cuts contains TPC cluster number, χ2\chi^{2}, DCA, refit requirements and kink rejection:

AODTrkFilterBits_t BIT(N) Description Detail
kTrkTPCOnly 0 Standard TPC only tracks GetStandardTPCOnlyTrackCuts
kTrkITSsa 1 ITS standalone, require ITS standalone tracks (remove pure SA) ?SetRequireITSStandAlone(kTRUE)?
kTrkITSConstrained 2 Pixel OR necessary for the electrons AND standard track cuts SetClusterRequirementITS(kSPD, kAny)
kTrkElectronsPID 3 PID for the electrons SetTPCnSigmaCut(AliPID::kElectron, 3.5)
kTrkGlobalNoDCA 4 standard cuts with very loose DCA (|xy|>2.4, |z|<3.2, 2D=kTRUE) GetStandardITSTPCTrackCuts2011(kFALSE)
kTrkGlobal 5 standard cuts with tight DCA cut, (|xy|<"0.0105+0.0350/pt^1.1", |z|<2) GetStandardITSTPCTrackCuts2011(kTRUE)
kTrkGlobalSDD 6 standard cuts with tight DCA but with requiring the first SDD cluster instead of an SPD cluster tracks selected by this cut are exclusive to those selected by the previous cut GetStandardITSTPCTrackCuts2011(kTRUE), GetClusterRequirementITS(kSPD,kNone), GetClusterRequirementITS(kSDD,kFirst)
kTrkTPCOnlyConstrained 7 Refitted TPC only tracks: TPConly information constrained to SPD vertex in the filter below GetStandardTPCOnlyTrackCuts, esdFilter->SetTPCOnlyFilterMask(128)
AODTrkBits_t
kIsDCA 14 set if fPosition is the DCA and not the position of the first point
kUsedForVtxFit 15 set if this track was used to fit the vertex it is attached to
kUsedForPrimVtxFit 16 set if this track was used to fit the primary vertex
kIsTPCConstrained 17 set if this track is a SA TPC track constrained to the SPD vertex, needs to be skipped in any track loop to avoid double counting
kIsHybridTPCCG 18 set if this track can be used as a hybrid track i.e. Gbobal tracks with certain slecetion plus the TPC constrained tracks that did not pass the selection
kIsGlobalConstrained 19 set if this track is a global track constrained to the vertex, needs to be skipped in any track loop to avoid double counting
kIsHybridGCG 20 set if this track can be used as a hybrid track i.e. tracks with certain selection plus the global constraint tracks that did not pass the selection
Parameter Description Std. Method Typical Value Setup
p/pTp/p_{T}-η\eta-ϕ\phi Basic kinematic variables
pTp_{T}, transverse momentum (GeV/c) trk->Pt() pTˉ0.66\bar{p_{T}}\sim0.66 [0,50] / 0.05
η\eta-ϕ\phi map η\eta, pesudo-rapidity; ϕ\phi, plane angle trk->Eta()/Phi() ηˉ0.5\bar{\eta}\sim0.5, ϕˉ0.0\bar{\phi}\sim0.0 [-1.0,1.0] / 0.002, [0,2π2\pi] / 0.006
DCA Distance of the closest approach, also known as impact parameter.
Large DCAxyDCA_{xy} is related to the subsequent decays or photon conversions. (cm) trk->DCA() 0.00±0.190.00\pm0.19 [-50,50] / 1000
DCAzDCA_z can be used for rejection of out-of-bunch pileup tracks. trk->ZAtDCA() 0.00±0.150.00\pm0.15 [-50,50] / 1000
Ncls.TPCN_{cls.}^{TPC} TPC cluster number, 160 (max.) trk->GetTPCncls() Nˉ100\bar{N}\sim100 [0,161] / 1
NclsFTPCN_{clsF}^{TPC} TPC findable cluster number trk->GetTPCnclsF() Nˉ105\bar{N}\sim105 [0,161] / 1
NclsSTPCN_{clsS}^{TPC} TPC shared cluster number trk->GetTPCnclsS() Nˉ24\bar{N}\sim24 [0,161] / 1
Nx.rowsTPCN_{x.rows}^{TPC} Crossed rows in TPC. trk->GetTPCNCrossedRows() Nˉ109\bar{N}\sim109 [0,161] / 1
Ncls.ITSN_{cls.}^{ITS} ITS cluster number, sum by layers [0,6] trk->GetITSNcls() Nˉ5\bar{N}\sim5 [0,7] / 1
χ2/NclustersTPC\chi^{2}/N_{clusters}^{TPC} TPC cluster tracking/fitting, χTPCTPC=fChi2perNDF×(Ncls.TPC5)\chi^{TPC}_{TPC}=fChi2perNDF\times(N_{cls.}^{TPC}-5) trk->GetTPCchi2()/trk->GetTPCncls() χ2ˉ1.2\bar{\chi^{2}}\sim1.2 [0,100] / 0.1
χITS2\chi^{2}_{ITS} ITS cluster tracking/fitting trk->GetITSchi2() χ2ˉ1.7\bar{\chi^{2}}\sim1.7 [0,100] / 0.1
Kink Tracks which does not have a continous particle trajectories, but show deviations due to decays or the emission of Bremsstrahlung.
Refit Fitting method, include ITS and TPC

For electron, the particle can hit the first or the second layer of the ITS detector (kAny). This cut helps to remove electrons from gamma conversion.

Calo Cluster / EMCAL+DCAL+PHOS

The cluster QA covers general cluster and cell properties. Official QA Repository, reference task - AliAnalysisTaskClusterQA / AddTask_ClusterQA from Gamma Conversion Group. Be careful with the binning of cluster energy histograms. All histogram can be updated after triggger selection and QA or analysis cuts (pt range, track charge, etc.).

Parameter Description Std. Method Typical Value Setup
NfiredN_{fired} Number of cells fired in cluster calo->GetNCells() Nˉ1.6\bar{N}\sim1.6 [0,100] / 1
EcellE_{cell} Energy (GeV) vs Cell ID (0~16888) calo->GetCellAmplitudeFraction(i) * E, calo->GetCellAbsId(i)
TimecellTime_{cell} Timing (μs\mu s) vs Cell ID cells->GetCellTime(id) Tˉ0.7\bar{T}\sim0.7 [-0.5,1.5] / 0.01
η\eta-ϕ\phi Geomtry map of cluster. Same as Track
EMCal: η[0.7,0.7]\eta\in[-0.7,0.7], ϕ[1.396,3.2637](107)\phi\in[1.396,3.2637] (107^{\circ})
DCal: η[0.7,0.2]&[0.2,0,7]\eta\in[-0.7,-0.2] \& [0.2,0,7], ϕ[4.677,5.707](60)\phi\in[4.677,5.707](60^{\circ})
PHOS: η[0.12,0.12]\eta\in[-0.12,0.12], ϕ[3.840,5.585](100)\phi\in[3.840,5.585](100^{\circ})
DclusterD_{cluster} Distance of cluster to others withing the same time window - cluster overlap
EclusterE_{cluster} Cluster energy calo->E() Eˉ0.5\bar{E}\sim0.5 [0,300] / 0.1
M02, M20, dispersion Shower shape parameters
M02, 2-nd moment along the main eigen axis. calo->GetM02() M02ˉ0.46\bar{M_{02}}\sim0.46 [0,20] / 0.1
M20, 2-nd moment along the second eigen axis. calo->GetM20() M20ˉ0.017\bar{M_{20}}\sim0.017 [0,10] / 0.01
Cluster dispersion, for shape analysis. calo->GetDispersion() Dpˉ0.2\bar{Dp}\sim0.2 [0,10] / 0.01
NLM Number of local maxia, vs Ncells/E
Δη\Delta\eta-Δϕ\Delta\phi Cluster track matching
DtrkclsD_{trk-cls} Distance of track to cluster, vs Δη\Delta\eta-Δϕ\Delta\phi calo->GetTrackDx/Dz()
pTp_{T} Pt dependent matching variable, vs Δη\Delta\eta-Δϕ\Delta\phi

*calo is the instance of AliADOCaloCluster from AliAODEvent::GetCaloCluster(AliAODTrack::GetEMCALcluster()) if AliAODTrack::IsEMCal() or AliAODEvent::GetCaloCluster(AliAODTrack::GetPHOScluster()) if AliAODTrack::IsPHOS().
*cells is the instance of AliAODCaloCells from AliAODEvent::GetEMCALCells()/GetPHOSCells().

To identify bad, dead and warm/hot cells, calibrate energy and timing, caculate EFrac and compare with mean value of neighboring cells.

EFrac (Unit: %) = cells energy fraction of full cluster energy, summed over all events --> turned out to be a much better discriminator than just looking how often cells fired

Definition EFrac Range of EFrac or mean
Dead cell EFrac < mean/3 mean>80
- EFrac < mean/5 40 < mean < 80
- EFrac < mean/8 10 < mean < 40
- EFrac < mean/10 mean < 10
Warm/Hot cell EFrac > 80 EFrac > 2 *mean
- EFrac > 20 EFrac > 3 *mean
- EFrac > 8 EFrac > 4 *mean
- EFrac > 5 EFrac > 5 *mean

ADC/Energy Trigger Threshold: Twiki, this value can also be estimated with peaks in cluster energy distribution due to the pre-scale. Considering the energy resolution, energy cuts using for analysis MUST be, about 1 GeV, higher than the configured thresholds.

Period L0 ADC EthE_{th}/GeV L1-EG1/DG1 EthE_{th}/GeV L1-EG2/DG2 EthE_{th}/GeV
16i-k 132 2.5 115 9 51 4
16l? 132 2.5 78 6 51 4
16o-p 132 2.5 115 9 51 4
*17g-r - - - ~11 - ~5

*From peak value in cluster energy distribution.

PID

Particle identification is performed on track level with detector response for final particles, like electron, muon, pion, kaon and proton (deuton, triton, helium-3, helium-4 for special topics). Traditionally, we deploy rectangular cuts on detector response (nσe/π/K/p/μn\sigma_{e/\pi/K/p/\mu}) to seperate particles. Bayesian approch, TMVA and other machine learning methods have also been studied and developed.

Definition of detector response:

ξ=nσ=xPID(signal)x^PID(m/z)σ(DetectorResolution)\xi=n\sigma=\frac{x_{PID}(signal)-\hat{x}_{PID}(m/z)}{\sigma(Detector Resolution)}

Detector response/signal:

PID framework:

Basic usage: Load macro AddTaskPIDResponse.C. Example can be found in AliAnalysisTaskPIDqa.cxx.

  //input hander
  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
  //pid response object
  fPIDResponse=inputHandler->GetPIDResponse();
  // detector response
  double kaonSignal = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon);
  double pionSignal = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion);
  double protonSignal = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton);

Bayesian approach: AliPIDCombined

// SETTING methods - UserCreateOutputObjects
// specify the detectors you want (OR syntax)
void SetDetectorMask(Int_t mask);
// specify lists of species (default: AliPID::kSPECIES=5)
void SetSelectedSpecies(Int_t selectedSpecies);
// load default TPC priors
void SetDefaultTPCPriors();
// load your own priors as a function of pt
void SetPriorDistribution(AliPID::EParticleType type,TH1F *prior);

// EXEC method - UserExec
// compute probabilities, return mask of detectors used and prob. array in bayesProbabilities
UInt_t ComputeProbabilities(const AliVTrack *track, const AliPIDResponse *response, Double_t* bayesProbabilities,Double_t* priorsOwn=NULL) const;
// Retrieve the probability to have a TPC-TOF mismatch
static Float_t GetTOFmismatchProb();

// OTHER
// Retrieve the priors used for a given track and a given detector mask
void GetPriors(const AliVTrack *track,Double_t* priors,Float_t centrality=-1,Bool_t isPPB=kFALSE) const;
// Return TPC priors histo for a given species
TH1* GetPriorDistribution(AliPID::EParticleType type)  const;

PID tender only for ESD: AddTaskTender.C

// all paramerters are boolean variables
AddTaskTender(kV0, kTPC, kTOF, kTRD, kPID, kVTX, kT0, kEMCal, kPtFix);

QA Task for general purpose: AddTaskPIDqa.C

Signal or nσn\sigma vs p/pT/η/ϕp/p_{T}/\eta/\phi

Hybrid signal: TPC-TOF, TPC-EMCal, TRD-?

Dielectron

Standard setup for invariant mass spectrum: [1.5,5.0] / 0.04 (GeV/c2)[1.5, 5.0]~/~0.04~(GeV/c^{2}), pre-defined J/ψJ/\psi range: [2.92,3.16] (GeV/c2)[2.92, 3.16]~(GeV/c^2)

Parameter Description Std. Method Typical Value Setup
me+em_{e^{+}e^{-}} Invariant mass of selected dielectron pair. (GeV/c2)(GeV/c^{2}) VAR::kM - [1.5,5.0] / 0.04
pTp_{T}-η\eta-ϕ\phi Basic kinematic variables VAR::kPt pˉT2Eth\bar{p}_{T}\sim2E_{th}
me+em_{e^{+}e^{-}} vs pTp_{T} Dielectron momentum spectrum
J/ψ\ell_{J/\psi} Pseudoproper-decay-length (cm) VAR::kPseudoProperTime 0.016±0.030.016\pm0.03 [-0.5,0.5] / 0.0001
NcandidatesN_{candidates} Event level, number of dielectron after cuts VAR::kPairs Nˉ0.5\bar{N}\sim0.5 [0,20] / 1
NJ/ψ/<NJ/psi>N_{J/\psi}/<N_{J/psi}> vs Ntrackles/<Ntracklets>N_{trackles}/<N_{tracklets}> Event level, ratio of candidates and multiplicity

*VAR is the instance of AliDielectronVarManager supported by PWG/dielectron

Jets

In ALICE offline software, jets are reconstructed with external package - fastjet. The input parameters contain clustering algorithm (anti-kT), jet cone raidus (R=0.2 for pp), recombination scheme (pTp_{T}-scheme) and ghost area units (0.01) with selected tracks (pT>0.15 GeV/cp_{T}>0.15~GeV/c) for ηjet<0.9R|\eta_{jet}|<0.9-R. The density of jet is defined as ρ=median{pT,i/Ai}\rho=median\{p_{T,i}/A_{i}\}, and pTp_{T} corrected after subtraction of UE (underlying-event) is: [AN-850:2.6]

pT,jetcorr.=pT,jetρAreajetp_{T,jet}^{corr.}=p_{T,jet}-\rho\cdot Area_{jet}

Parameter Description Std. Method Typical Value Setup
pTp_{T}-η\eta-ϕ\phi Jet basic kinematic variables JetFinder [0,200] / 0.2
Area Jet area JetFinder AˉR±0.1\bar{A}\sim R\pm0.1 [0,5R] / 0.01
pTp_T vs A Use cut of 0.6*R to reduce fake jet contamination
ρ\rho Jet UE density, Event level RhoTask ρˉR\bar{\rho}\sim R [0,10] / 0.01
ρ\rho vs pT,jetleadingp_{T,jet}^{leading} Jet UE density vs pTp_{T} of leading hadron, Event level
ρ\rho vs NtracksN_{tracks} Jet UE density vs multiplicity, Event level ρˉ/Ntrk.0.05\bar{\rho}/N_{trk.}\sim0.05
δpT\delta p_{T} vs prob. density Density fluctuation, δpT=RCipT,itrackρARC\delta p_{T}=\sum_{RC}^{i}p_{T,i}^{track}-\rho\cdot A_{RC}

RC is random cone method for the fluctuation of jet UE density.

Signal Extraction

In PWGDQ, there are two analysis frameworks, dielectron and reducedTree, for general purpose of dielectron and quarkonium physics.

The core class of dielectron is AliDielectron, which consists of event processing methods, analysis cuts/filters (event, track, leg and pair), arrays of tracks and pair candidates, histogram manager, correction framework manager, event mixing handler, track rotator and MC signal. Physics variables are processed and stored in AliDielectronVarManager.

// To load dielectron framework
#include "AliDielectron.h"
#include "AliDielectronVarManager.h"
#include "AliDielectronVarCuts.h"
#include "AliDielectronEventCuts.h"
#include "AliDielectronPairLegCuts.h"
#include "AliDielectronTrackCuts.h"
#include "AliDielectronCF.h"

class AliDielectron;
class AliDielectronVarManager;
class AliDielectronVarCuts;
class AliDielectronEventCuts;
class AliDielectronPairLegCuts;
class AliDielectronTrackCuts;
class AliDielectronCF;

The reducedTree was created as restructuring of dielectron package in Oct 2015. With AliAnalysisTaskReducedTreeMaker, original AOD tree woud be filtered and converted to dst tree.

Event selection

The events are required to pass the physics selection (Task) and have a reconstructed vertex. For J/ψJ/\psi analysis in high pTp_{T} range, we select EMCal triggered electron (single) for dielectron reconstruction and use MB events to determine the rejection factor (RF) of EMCal.

Variable Cut / Value
Offline Trigger MB/kINT7
- EMCal L1/kEMCEGA (EG1/EG2/DG1/DG2)
Vertex type GetPrimaryVertex()
Ncontrib.VtxN_{contrib.}^{Vtx} >1
|ZVtxZ_{Vtx}| < 10 cm
Physics Selection True
Pileup False

Primary vertex can be reconstructed from tracks, TPC, SPD, and GetPrimaryVertex() returns the best available.

There are two types of pileup that have to be considered:

Tools and methods for pileup rejection: Physics Selection / Past-future protection, Multi-vertexer, AliVEvent::IsPileupFromSPD.

Track selection

Use track cuts to select good tracks as electron candidates, including kinematic variables, tracking result, TPC parameters and PID limitations.

Variable Cut / Value - AN646 AN746 AN876
pTp_{T} (GeV/c) >1.0 >1.0 >1.0
η\eta [-0.9,0.9] [-0.9,0.9] [-0.9,0.9]
DCAzDCA_z (cm) [-3,3] [-3,3] [-2,2]
DCAxyDCA_{xy} (cm) [-1,1] [-1,1] [-0.5,0.5]
Ncls.TPCN_{cls.}^{TPC} 85 70 70
χ2/Ncls.TPC\chi^2/N_{cls.}^{TPC} [0.0,4.0] [0.0,4.0] [0.0,4.0]
χ2/Ncls.ITS\chi^2/N_{cls.}^{ITS} - [0.0,30.0] [0.0,30.0]
TPC Ncls.N_{cls.} track segments - 6\geq6
TPC Ncls.N_{cls.} bits fired - [6,9] -
TPC Ncls.N_{cls.} shared - 1\leq1
TPC Ncls.N_{cls.} shared ratio - [0.3,2.0]\notin[0.3,2.0] -
TPC Ncrossedrows/Nfindcls.N_{crossed-rows}/N_{find-cls.} - [0.8,2.0] -
Reject kink True True True
SPD cluster Any Any Any
ITS+TPC refit True True True
nσeTPCn\sigma_e^{TPC} [-2.25,3.0] [-3.0,3.0] [-3.0,3.0]
nσpTPCn\sigma_p^{TPC} - > 3.5 > 3.0
nσπTPCn\sigma_{\pi}^{TPC} - > 3.5 > 3.0

EMCal cuts for ANY leg: E/p[0.8,1.3]E/p\in[0.8,1.3]

Out-of-bunch pileup tracks are removed according to the DCAzDCA_z, hits requirement in any of the two SPD layers and a track refit using the ITS.

Rejection Factor

For brief, RF is the ratio of event number in MB and selected triggers.

Results from C. Jahnke's report:

16i 16k 16l 16o
EG2 500±2500\pm2 494±1494\pm1 505±2505\pm2 496±4496\pm4
EG1 6317±966317\pm96 5736±425736\pm42 1818±131818\pm13 6739±1936739\pm193
DG2 1352±101352\pm10 1223±41223\pm4 1132±61132\pm6 820±8820\pm8
DG1 15916±38615916\pm386 8392±958392\pm95 10287±17510287\pm175 8608±2798608\pm279

J/ψJ/\psi reconstruction

  1. Invariant mass spectrum. Fit with Crystal-Ball (signal) + pol2 (background) function.
  2. Combination of EMCal L1 trigger classes (EG1/EG2/DG1/DG2).
  3. Cross section vs pTp_{T}, after normalized with EMCal rejection factor.
  4. Pseudo-proper decay length J/ψ=LxyzmJ/ψc/pee\ell_{J/\psi}=L_{xyz}m_{J/\psi}c/|p_{ee}|, for the seperation of prompt and non-prompt J/ψJ/\psi. LxyzL_{xyz} is the distance between the primary and dielectron vertices. The prompt, non-prompt and background components are parameterized using data and MC events after unfolded with sPlot_{s}\mathcal{P}lot technique.

Jet finder

Source: QA/AddTaskJetQA.C

Parameter Value Description
nTrack "usedefault" name of track branch
nClusters "" name of cluster branch
jetAlgo antikt_algorithm AliJetContainer::EJetAlgo_t
radius 0.2 / 0.4 Radius of jet cone on ηϕ\eta-\phi plane
jetType kChargedJet AliJetContainer::EJetType_t
minTrPt 0.15 Track pt cut (GeV/c)
minClPt 0.30 Cluster energy cut (GeV)
ghostArea 0.01
reco pt_scheme AliJetContainer::ERecoScheme_t
tag "Jet" Jet name in container
minJetPt 1.
lockTask kFALSE
bFillGhosts kFALSE

Main task:

Nano AODs

Source: NanoAOD/YatoJpsiFilterTask.h/cxx

  // Access jet container by formatted name
  TString jetName = AliJetContainer::GenerateJetName(jetType, jetAlgo, recoScheme, radius, partCont, clusCont, tag);
  // TODO: AddJetContainer by user
    // jets02 = "Jet_AKTChargedR020_tracks_pT0150_pt_scheme"
    // jets04 = "Jet_AKTChargedR040_tracks_pT0150_pt_scheme"
  TClonesArray* jets = dynamic_cast<TClonesArray*>(aodEv->FindListObject(jetName));

Correction

TPC post-calibration

For periods which do not have dedicated TPC splines and show a greater mismatch between data and MC. The post calibration is performed using a clear electron sample from tagged electrons from photon conversions. QA plots shows nσeTPCn\sigma_{e}^{TPC} as a function of p, η\eta. The conversion electron selection is made using cuts similar with J/ψJ/\psi electrons but as a lot of conversions happen in the ITS material, the requirement for SPD refit is removed. [AN876:4.4]

Variable Cut value
χ2\chi^2 < 10
cosθpointing\cos{\theta_{pointing}} [0.0, 0.05]
DCA [0.0, 0.10] cm
rdecayr_{decay} [-3.0, 90.0] cm
Ψ\Psi [0.0, 0.2]
meem_{ee} <0.1 GeV/c2<0.1~GeV/c^{2}
ITS refit yes
TPC refit no

The calibration centers the electron band at 0, with a width of 1. The calibration maps (2D bin-by-bin) are used to re-calculate the TPC nσen\sigma_{e}:

nσcalib(pin,η)=nσ(pin,η)n0(pin,η)w(pin,η)n_{\sigma}^{calib}(p_{in},\eta)=\frac{n_{\sigma}(p_{in},\eta)-n_{0}(p_{in},\eta)}{w(p_{in},\eta)}

where n0n_{0} and ww are the mean and witdth of the uncalibrated electron band.

EMCal correction and embedding framework

Reference: alidoc | PCG-tutorial | ALICE-analysis-tutorial (Correction, Embedding) |

J/ψJ/\psi acceptance and efficiency

Unfolding of jet pTp_{T} resolution

The procedure is carried out in two dimensions, z and jet pTp_{T} with D'Agostini's iterative algorithm, which is avalaible in RooUnfold package. In this step, we should produce a four-dimensional detector-response (MC & data) matrix for prompt and non-prompt J/ψJ/\psi.

Systematic uncertainties

Preliminary Result

Publication

Appendix: Tasks and Scripts

Analysis Task Description Configuration Full Path
- runAnalysis.C
Physics Selection Selects collision candidates from data runs, applying selection cuts on triggers and background rejection based on the content of the ESD - OADB
MultSelection New centrality estimator OADB
CDB Connect Task just allowing connection to CDB (no lock) - PWGPP
EMCal Correction Perform correction on bad channel, energy, timing and clusterizer. YAML-PWGHF PWG/EMCAL
PID response Basic PID task - AliRoot
PID QA QA for PID result on full AOD - AliRoot
- QA/AddTaskJetQA.C
Emcal Jet Jet finder, create jet container kCharged, R=0.2/0.4, anti_kt AddTaskEmcalJet
Rho Estimate jet background by kt_algorithm AddTaskRhoNew
DeltaPt Jet Pt correction RCperEv=100, MinRC2LJ=R PWGJE/EMCALJetTasks
PWGJEQA Performs basic QA relevant to the jet group, by run-wise, event, track, cluster and cells. AliDoc EMCEGA PWGJE/EMCALJetTasks
Spectra QA Perform QA on jet spectra by multiplicity. INT7, Jets_EMC_pp
- QA/AddTaskJpsiQA.C
MultiDielectron Basic Analysis task for Dielectron by single event analysis with multiple cuts definition (AliDielectron) ConfigJpsi_cj_pp.C (INT7/EG1/EG2/DG1/DG2, EMCal_strict+RAW) QA/AddTask_cjahnke_JPsi
- NanoAOD/AddTaskJPSIFilter.C
Jpsi Filter Filter AOD with dielectron candidates on event level; Create branch for dielectron pairs and jets kEMCEGA + EMCal_loose NanoAOD/YatoJpsiFilterTask