Particle physics @ Utopian - Implementing an LHC analysis on a computer: the physics objects
Implementing a physics analysis such as those on-going at the Large Hadron Collider at CERN necessitates to get some knowledge on what is reconstructed in a detector. The reconstruction of a collision then leads to a small set of physics objects that any single analysis of LHC collision data will (deeply) investigate.
[image credits: CERN]
As a first step to this project aiming to offer to Utopian contributors a way to help particle physics research, I decided to start with the description of three of those objects.
In parallel, I have detailed the computer framework which this project is relying on and how these objects are embedded into it.
In this post, I focus on a fourth class of objects that are called jets, and I introduce some of the properties of the objects that are used in the design of an analysis.
As usual, an exercise is proposed at the end of the post in order to get used to the concepts.
SUMMARY OF THE PREVIOUS EPISODES
This project targets the design of a set of independent C++ codes reproducing existing physics analyses performed at the CERN Large Hadron Collider (aka the LHC). Those pieces of codes are planned to be merged to the MadAnalysis 5 Public Analysis Database that is used by particle physicists for research.
The MadAnalysis 5 framework can be downloaded from LaunchPad (a competitor to GitHub sharing the same key principles) or from its GitHub mirror. External dependencies have then to be installed according to these installation instructions.
[image credits: Harp (CC BY-SA 3.0)]
Stable particles correspond to objects that are stable enough to reach the detector undisturbed, and therefore interact with it.
As I have explained in my previous post, these objects can directly be used in the MadAnalysis 5 framework.
- Electrons can be accessed through the
event.rec()->electrons()
container. - Muons can be accessed through the
event.rec()->muons()
container. - Photons can be accessed through the
event.rec()->photons()
container.
I now move on with the next class of physics objects that are reconstructed in a detector and that one needs in a physics analysis, and I will then start discussing the properties of all objects that are used in the design of realistic LHC search.
JETS IN A NUTSHELL
Although the LHC collides protons, protons are not elementary. In a high-energy proton-proton collision, we have in fact a collision between two of the proton constituents (as largely detailed here).
Those constituents consist in strongly-interacting elementary particles named quarks and gluons. However, more quarks and gluons will be produced by radiation originating from the colliding guys, on top of those that could be parts of the collision products.
[image credits: ATLAS@CERN]
Once produced, very highly-energetic strongly-interacting particles radiate other highly-energetic particles, which radiate themselves, and so on.
At each radiation, the energy decreases as the energy of the mother particle is shared among the daughter particles.
When the energy becomes too small, the radiation phenomenon stops.
At the end of the day, we get thus a collection of not too energetic particles roughly moving along the direction of the original quark or gluon.
By virtue of the theory of the strong interactions, none of these radiated quarks and gluons can be observed. They will instead form composite states as a result of what is called confinement.
All those composite states, that are the guys that will interact with the detector material, are again moving along the same direction, and are therefore organized in what we actually call a jet of strongly-interacting particles that can be reconstructed in the detector.
JETS (AND THEIR PROPERTIES) IN THE MADANALYSIS 5 FRAMEWORK
[image credits: CMS@CERN]
Jets are thus crucial and of course available within the MadAnalysis 5 framework.
In order to access their C++ container, one makes use of the event.rec()->jets()
object, similarly to what we had done here for electrons, muons and photons.
This event.rec()->jets()
guy is hence a vector whose elements are all C++ representations of jets.
There are generally many jets in the results of an LHC collision (easily several dozens), and not all jets are interesting. We therefore want to determine the set of relevant jets on the basis of the properties of these jets.
To this aim, we generally use a small number of jet properties. Because of the remnants of the colliding protons lying along the collision axis, there is no way to get a clean vision of what is going on in this direction. We consequently focus on the plane that is transverse to the collision axis.
Let us assume that we have a RecJetFormat
object named myjet
(event.rec()->jets()
is hence a collection of RecJetFormat
objects). The most important properties are:
- the jet transverse energy, that is accessed as
myjet.et()
, - the jet transverse momentum, that is accessed as
myjet.pt()
, - the jet pseudorapidity, that is access as
myjet.eta()
.
The momentum describes more or less how the particle moves, and the transverse momentum restricts the motion to what is going on in the transverse plane. The pseudorapidity is a very useful variable describing the angle of the particle track with respect to the collision axis.
OVERLAPPING OBJECTS
Particles are identified (i.e. tagged as an electron, a jet, etc.) according to their fingerprints in a detector. These fingerprints may be very similar in some cases, so that it may occur that a given object could be equally tagged as two different objects.
[image credits: ALICE@CERN]
For instance, an electron could be sometimes seen as a jet. There is a non-zero mistag probability.
A given physics object is thus often included in several collections, and the overlap has to be removed at the level lof the analysis.
Let us take for example an electron myelectron
and a jet myjet
that are the same object. We do not know at this stage whether this object has to be considered as a jet or an electron.
The analyses implement some criteria that allow us to make such a decision.
For instance, if the angular distance (between the jet and the electron is smaller than some threshold, one should remove the object from the jet collection and consider that it is an electron.
To effectively remove this overlap in the C++ code, the only thing we need to know is how to evaluate the angular distance between the myelectron
and myjet
quantities. This is done through myjet.dr(myelectron)
, which directly returns this angular distance.
Other properties are important, but this will be treated in the next posts. For now, I only add that all the above properties are also available for electrons and muons (stored as instances of the RecLeptonFormat
class) and photons (stored as instances of the RecPhotonFormat
class).
THE EXERCISE
For this exercise, we will investigate an existing search for supersymmetry undertaken by the ATLAS collaboration. The corresponding research paper can be obtained here.
Please do not try to understand every single line of that study, and go instead directly to section 5 (pages 12-14). The idea is to implement the object definition described in this search as close as possible. Golden rule: everything from the paper that sounds weird and that I have not mentioned so far can be ignored. Any question can of course be asked in the comments. Always! ;)
The third paragraph of the section details how baseline electrons are defined. Create a vector with the electrons matching the momentum and pseudorapidity requirements that are mentioned in this paragraph. Ignore electron isolation.
The fourth paragraph of the section defines baseline muons. Create a vector with the muons matching the momentum and pseudorapidity requirements that are mentioned in this paragraph. Once again, isolation can be ignored.
The last paragraph of page 13 defines baseline jets. Ignore the pile-up and jet cleaning stuff and create a vector of baseline jets.
Go directly to the third paragraph of page 14 and implement the overlap removal procedure between baseline jets, muons and electrons. Ignore the b-tags, ghosts and shared track stuff. In short, the second and fourth removals shown in Table 3 on page 15 must be implemented.
Create vectors with signal electrons, muons and jets, to be extracted from the corresponding vector of baseline objects (see the fifth and sixth paragraph of the section).
Print the number of baseline electrons, muons and jets before and after the removal procedure. Print the number of signal electrons, muons and jets.
Apply the code on the previous sample of 10 simulated LHC collisions (see here).
Don’t hesitate to write a post presenting and detailing your code allowing to get to the answer. Please do not forget to mention me directly within your post, so that I could easily find it and to commi your code on this GitHub repository.
The deadline is Sunday June 10th, 16:00 UTC.
MORE INFORMATION ON THIS PROJECT
- The idea
- The project roadmap
- Step 1a: implementing electrons, muons and photons
- Step 1b: jets and object properties (this post).
STEEMSTEM
SteemSTEM is a community-driven project that now runs on Steem for more than 1.5 year. We seek to build a community of science lovers and to make the Steem blockchain a better place for Science Technology Engineering and Mathematics (STEM).
More information can be found on the @steemstem blog, on our discord server and in our last project report. Please also have a look on this post for what concerns the building of our community.
Sorry, just to be clear:
You mean implementing the (e,μ) and (j,l) checks only, right?
You mentioned that we should ignored "shared track" but that is the matching criteria of the (e,μ) check.
Also, I'm not sure what a "calo-tagged" muon is. Is this attribute stored in the C++ muon instance?
Finally what does the "/GeV" mean in Plt/GeV?
Does this mean the transversal momentum of the lepton expressed in GeV?
Thanks for your help.
Argh! A typo in my post. I meant second column. Sorry about that. One needs to implement the e/j and j/l removals.
In particle physics, we use a very handy system of units in which the speed of light equals 1 and the Planck constant equals 1. This implies that everything can be expressed in GeV (energy, momentum, mass, etc...) or 1/GeV (length, time, etc...) or actually some powers of GeV.
Ah cool, that makes sense now.
OK, but I'm still unsure how this affects the calculation in column 4.
I understand the Plt part but I'm not sure if the /GeV has any bearing.
Units are usually not explicitly indicated in formulas, right?
Or am I wrong and there is some kind of division to apply to Plt?
Thanks!
This is actually a way to write the equation consistently from the dimension standpoint. The transverse momentum pT has to be given in GeV, so that pT/GeV is dimensionless. Note that MadAnalysis assumes every single pT is given in GeV, so that you can in fact ignore the "/GeV" part.
Perfect. Thanks.
Most welcome sir...
Thanks sir
Most welcome sir
Thanks
Hey @irelandscape
Here's a tip for your valuable feedback! @Utopian-io loves and incentivises informative comments.
Contributing on Utopian
Learn how to contribute on our website.
Want to chat? Join us on Discord https://discord.gg/h52nFrV.
Vote for Utopian Witness!
Hey @lemouth
Thanks for contributing on Utopian.
Congratulations! Your contribution was Staff Picked to receive a maximum vote for the blog category on Utopian for being of significant value to the project and the open source community.
We’re already looking forward to your next contribution!
Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.
Want to chat? Join us on Discord https://discord.gg/h52nFrV.
Vote for Utopian Witness!
The pleasure is for me. Thanks for the support! :)
What is the unit of a value returned by
myjet.pt()
? Is it GeV? And do we need to check if particles satisfy(for electrons)
I also assume that transverse impact parameter can be ignored as not mentioned in your post.
Edit: OK, transverse impact criteria is only for signal particles, not baseline ones, is that correct?
A transverse momentum is always expressed in GeV... for particle physicists. The trick is that in our system of units, the Planck constant equals 1, and the speed of light equals 1. With this in mind, everything is much simpler :)
For the 'loose' stuff, please ignore it. Electrons can sometimes be confused with jets, as I said in the post. Therefore, you impose different identification criteria to determine whether an electron-like object is really a electron or is in fact a jet. There are many of these things we cannot handle with public tools. So that we make approximations. For now, just ignore it. In the next post, I will start addressing the part we can cope with.
Exactly! For anything :)
I was wondering whether everything was fine or if you had any more questions relatively to the exercise?
Yes, sure, I'm just a bit short on time lately.
No problem! I will wait for you (I was just wondering since I didn't receive any news ;) )
I'm having a little trouble interpreting the 4th column matching criterion. Specifically, the term in the denominator.
I'm pretty confident that the first term is just the momentum of the lepton being compared, but what screws me up is the division by GeV. Is this just to remove units?
In particle physics, the system of unit is the following
Under these conditions, a momentum is expressed in energy units. GeV is one of those (and very appropriate for LHC physics). The fraction pT / GeV means that the numerical value to be used for the pT has to be given in GeV units. By default, madanalysis 5 returns the pT in GeV.
In short: you can ignore the GeV. I just leads to a dimensionless quantity (an angular distance is dimensionless). Does it clarify?
Definitely clarifies. We do similar dimension removal for a bunch of fluid dynamics stuff, but I'm not used to the convention of putting the units into the equation like that. Glad to see my intuition was good.
A goods choice of units is always healthy to make our lives easier :)
I can't help but feel that 'unis' is a bit of a Freudian slip.
Although it's not dimensionless, my favorite is how we civil engineers often refer to pressure in units of 'head'. Literally, the height of a water column per unit area. (Analogous in concept to mm Hg) A very handy unit when you're concerned with lifting fluids/making sure they flow well after friction losses.
The typo is fixed :D
What is the atmospheric pressure in terms of heads? 10 or something?
i was actually thinking about something since i'm not really the C-expert ... it just wandered through my mind i guess. I don't know if C comes with the masters degree in physics or if its just a necessary hobby btw?
But, in the hope i understand correctly (i have by nothing near the skill to work on this) the LHC is basically built to look for new particles so what you call jets is data gathered from colliding particles at near lightspeed, right ? it probably looks like some kind of quantum-sized explosion or maybe it actually looks like a jet ? can you even see it in anything but the numbers or does it look like a spike on a graph overthere ?
So (im just trying to get it, its a bit late i know but i 'm not very linear person i was thinking about it a few days ago.
You create a dataset where all these jets fit in (an object or class or whatever its called in the language used) and then compare it to existing particles (like electrons for instance which have a certain number of
euhm ... attributes ? :-) that are already know through observation over time, basically through empirical study, if all of the attributes fit thes current "jet" in question then it is set aside to go for the next one to compare to all that exists BUT
phew, im getting to it ? are you like 100% sure that this means it IS an electron (or whatever other already known particle) or does that mean its highly probable ... and what
(o dear ... lol) what constitutes a new particle ... i mean since it's new, how do you know its a particle at all and how do you know a set of data which is discarded is NOT one because maybe since its UNknown it might just be something no one ever taught of, its like murray gell-man came up with quarks (or proved the existence that im not sure i just remember the man for his very polyvalent skillset which probably gave him a lot of insight from macro to quantum and back), just an example, but before that quarks "didnt exist"
so in case of particles that dont exist , what exactly do you use to
euhm ...
toooooooo .... to 'understandr wether it IS one or not ? or just noise or i dont know 'quantum debris ?' lol just making the word up as i go you know i dont have any kind of education in physics but you seem to be a patient explaining man so
here i am :)
hoping you still read this on a near dead post (i mean paid out sorry bad choice of words, these articles are pretty timeless arent they)
allright sorry for the mess i hope i made some sense in my questions ?
Programming comes with practice. The basics can be learned in a couple of days on the web. Then practice, practice and practice will leads to improvement :)
Jets is something connected to a specific class of particles. Strongly-interacting particles have the property, at high-energy, to radiate other strongly-interacting and so on. Therefore, once one has produced one of these particles, we ned up with a bunch of them roughly moving along the same direction. This is what is called a jet. Does it clarify?
However, in terms of detector hits, it is sometimes hard to tell the difference between a jet and an electron. And for physics, we need to make sure we consider a jet as a jet and an electron as an electron. For that reason, we need to design identification strategies.
New particles are often unstable and often decays into known stuff. By comparing what we expect in terms of known stuff and what is observed, we can conclude about the existence (or not) of a new particle. Of course, other searches also look for stable new particles. In short: this is covered ;)
I hope this answers everything, otherwise please come back to me :)
well i know a bit of programming that's not it, i think i wrote my first "hello world" when i was eight or nine in basic, i just don't know C hahah, my comfort zone atm is more with linux shell , somewhat of a linux fan, im actually busy (and the word is busy, its more like ergotherapy in the middle of fits of temporal insanity of which the frequency directly relates to stress levels after too many years in this town)
something i call steemterm
which is a collection of functions and commands that can be used by mainscripts, mainly bubbled out of things i used for my account @ubasti which i hope to turn into a location independent folder structure that can be used anywhere and with the right permissions should be able to be contained to its own root, preferring functions over subcommands so as not to spawn extra processes. I run minimal machines after all. Actually i'm hoping to end up with something i can cram onto a [vocore](http://vocore.io/v2u.html) , the weirdo version of the raspberry lol but thats all hobby and ergotherapy as said. Most important is brainrot prevention. I don't think focus on serious projects and this thing goes along at about a few lines of code per night (on a good night)
and some php but there's nothing much special to that since that's just used to generate html which isnt even a programming language :p
( https://steemit.com/rudyardcatling/@rudyardcatling/catoverflow-svg-logo-through-php-or-pure-html-or-simply-png )
i find most available tools not quite doing what i exactly want and i just like terminal commands so it's 'a thing' i guess. Basically i try to go for minimal network load and fast response, keeping account historys locally unless asked to reload, only downloading incrementally like if the local hist has 12000 txs and the online has 12050 then it will only download the last 50 and append to the local file because i think not doing that would stress the network way too much, the local can be parsed very fast with linux on an ssd drive
and so on because i'm going on and on lol .. i think that's what i'll be doing most my posting about when i get my frequency down to one per day or less (the money is an important part to me, alas)
back to the physics .... so by "strongly-interacting" you mean the particles that collide when you shoot them through the tunnel (or whatever you call it overthere ?) or particles that actually basically revolve like electrons around neutrons/protons and such ?
Yes i remember when the LHC wasnt even active there was this whole doomsday cult about how it was going to destroy the world by creating a black hole that would suck down the whole planet, but in fact those mini black holes (if at all black holes) wouldn't even exist long enough, even if they had the power to suck down (pardon my lack of professional language again) anything at all, i think i get that much.
Now the last big thing i know of was the elusive higgs boson , nicknamed god particle for some reason, of which im not still quite sure what its supposed to do in the grand scheme of things but there has probably been a collision or two, maybe three since that :p
so are you looking for something that has actually already been theorized or are you just looking for potential signs of the unknown ? something you need to fill in the gaps in the current theories ? the elusive dark matter filling up the cosmos maybe ?
It's a whole lot to grasp, i'm sure even there most people have a specific sub-field of study because the whole science is SO large i doubt any single one person could just specialize in all of it anymore, right ?
right ... when in hischool i had a lot of teachers asking me to keep my essays short lol, so i guess this should be reply then ... (imagine what an essay was hahah-)
I you know basic, I am sure learning C could be done in a day or two :)
I actually mean particles sensitive to the strong interactions. At the elementary level, those are quarks and gluons.
Do you mean this? More seriously, a blackhole both accrete matter and evaporate. It can then grow or shrink according to the relative magnitude of the two processes. As a result of the LHC energy , any black hole that could be potentially created at the LHC will evaporate in no time.
This is because of an editor who wanted to sell some books... The original title was "The Goddamn particle". The 'damn' has been scratched, with the associated disastrous effect.
Now, the Higgs boson is actually a background to many searches :)
lol ok ... spoken like a true particle physicist i suppose :D
i'm not sure everyone would come to grasp C in two days when they know basic , i suppose you refer to the programming logic being the same whatever you language you use but basic is basic because it's basic and C is closer to machine level so maybe its simple to grasp if you study the building blocks of the universe for a hobby and a living ;-) and maybe i could if i would be able to focus get it down fast (i usually don't really store syntax, i just look it up, if i do a php script this month and i do one next month i probably have to look up the exact way to write loops or conditionals just to make sure because even if i can figure out the algorithm in my head the actual syntax or way of writing isnt really in my head not for php, not for javascript, not for much anything but spoken language i think :-) its just me, i know thats not how must people function but i dont function on dopamine either.
which is not a milennial instant gratification thing i just can't be lured with it the big reward in the future if you just do this and that right now and behave. Like dali liked to say ... i'm not weird, i'm simply abnormal lol
(ah that's my favourite neuromancer there in the video, one who i would have loved to have for docent back when my brain was in one piece, im sure he could have lifted me up to greater heights, very inspiring person)
I mean it's easy for someone to just ... like maslow said (also one of my all-time favourites, especially the pyramid) and something i call observers paradox or in some cases homocentrism to see the world from where you're standing.
People would tell me all the time how easy it is to lay a driveway and cut a brick in half just by feeling with one hit while i kept telling them you serioulsy don't want me to build a wall for the house you're gonna sleep in what comes easy to one isnt so much for another
i never actually had use for c and thats why i never looked into it i always thought if it comes to that why not go straight for assembler lol, but it hasnt, and i doubt it will anytime soon.
Before i lose myself in psycho-filosofy again ..
i had to look that up and its more clear now . Just having someone willing to talk about it already makes a difference and i never knew thats why they called it the god particle
i see you have a french post on the fifth force ..
and here i was thinking there's a weak and a strong force but i seem to miss two then ?
i might come back with more questions later, thanks a LOT for taking time every time
!!!!!!!
I naively think that if one person understands one language, he/she can understand any programming language. But maybe I am too naive? But as you (kind of) said, at the end of the day, it is just a matter of knowing how to find the necessary information efficiently.
Between 'god' and 'goddamn', the difference is 4 letters and better sales :)
There is a link to the English version of that post on the first paragraph of my French post. You are missing the most well-known forces: electromagnetism and gravity :)
Don't hesitate to shoot any extra question!
you shouldn't lower yourself simply because ... i think if there were more people like you physics would have a shot at the mainstream
i can manage with the french post i'm sure, an opportunity :)
What is easier: C++ or French? :)
Hi, thank you for another spectacular post. We are really happy that we can see such series and content in Utopian and that we can support it. You always deliver high quality and keep the level of engagement high.
This post has been staff picked. If you excuse me, I will not share the regular link to the helper review questionnaire.
Though, I am curious about the numbers of people that joined your exercises. I can see files from 3 people from the last week but were there also other people who tried to participate?
Chat with us on Discord.
[utopian-moderator]
Thanks a lot for the very positive message (and no problem for the review link ;) ).
For the moment, we have indeed three people involved: @effofex, @irelandsape and @mactro (by alphabetical order). I can imagine that at least two of them are busy with the exercise proposed here from the comments I received.
Maybe could they answer this comment to update us?
Many many thanks sir
You are welcome. But why thanking me?
Most welcome sir
Again? What is going on here? See @bulet07 message above...
Most of my discretionary weekend time happens after my kid goes to bed. This week, they've been resistant (to put it mildly) to bedtime. I'm planning on making some time Monday to really hack it at.
Cool! I am looking forward to read from you Note that the deadline is next Friday, but I won't in fact post the next episode before Jun 11th as I have a committee meeting this week. In short, you still have plenty of time :)
Now I know you're truly an academic. We have some of the most interesting views on 'deadlines' and there's always a committee meeting in the way of stuff.
Yeah... the next post may actually be later this week. Not even started writing it,
That'll give me some time to go back and fix some stuff :)
Sure please take your time. As you can see, the new post is not out yet. Most probably Friday... Or in fact: hopefully Friday ;)
Ok this one is going to take a bit longer. 😀
Might try to read the full paper because it's kind of nice to implement something that‘s not completely alien but I think some of it might go over my head! 😅
Thanks for the clear instructions.
I also give more time. I am not (too) foolish :)
In 5-10 posts (I actually don't know the exact number), we will have read together the full paper :)
I hope they are lear enough so that you could succeed with the exercise :)
I have a question.
Is the overlapping selection process to be applied solely within each individual event (collision), or across events as well?
In other words, do the events in the supplied sample attempt to repeat the same collision several time or do they correspond to different experiments?
If I understand well, the sample that our program will process correspond to simulations that result from the Supersymmetry theory which predicts certain particles to be detected.
These simulations would then be compared to real collisions in LHC.
Is this correct?
This is really an impressing job your are doing with this @lemouth!
I really hope some people with enough skills can use this information and start doing their contributions, leverage this blockchain to help with science researches should bring great results.
I wish the best to this project mate, cheers!
I had three people following so far. Let's see how many will be left in 10 days. Surprize surprize :D
Thanks for passing by! :)
you, sir,
are delivering some great art here,
i hope you are among the people to prove einstein was right and
god does not play dice
you see, i'm a bit of a groupie ... rebel physicist , delinquent school quitter, dreamer, subject to hormones
i have always been a fan of the man
and that's the one thing that needs numerical proof
i think after that he will sleep easy
Sorry, but I am then a bad guy ;)
You are doing a wonderful job @lemouth, your efforts are more than appreciated. Sounds and looks like a very promising and interesting project.
I'm too super busy but this sounds exciting and I will have to take a look! So much technical knowledge stored on the blockchain nowadays! Great times ahead!
Keep it up!
Don't you even want to free some time to try it out? :D
I will try to find some time for this!
Excellent! I am looking forward to your contribution! :)