Opened 9 years ago
Last modified 8 years ago
#852 new Bug
new invisible particle implementation
Reported by: | J Dutta | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | |
Component: | Delphes code | Version: | Delphes 3 |
Keywords: | Cc: |
Description
Dear experts,
If I have to add a new neutral stable particle which contributes to the missing energy, is it enough to make the following change in the delphes_card.tcl card?
add EnergyFraction {PDG} {0.0 0.0}
similar to the commands for the lightest neutralino if stable in the same card.
Is there any other place in the code where changes need to be made?
Also, in the MET construction, does anything need to be changed in the MissingET module or elsewhere in delphes?
Your advise in this regard will be very helpful.
Thanks & Regards,
Juhi Dutta
Change History (11)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Hello,
Thank you for the reply! I checked for two cases: with the original delphes card and with the above addition of energyfraction. I see that the met plot does peak at a higher value in the second case as compared to the first case. Conversely I see that in the first case, the jet multiplicity peak and the jet pt distribution peak at higher values. It seems that the neutral particle is also being included in the jets. Is that normally what should happen if I do not specify the ecal hcal fractions as 0 of the new particle which contributes to the met. It treats it as a stable neutral hadron which it includes in the jet clustering?
Thanks & Regards,
Juhi Dutta
comment:3 by , 9 years ago
Hello,
Yes. By default, stable neutral particles with an "unknown" PID are interacting in the HCAL. So, it is mandatory to do the trick of adding the Energy Fraction to 0.
Cheers,
Alexandre
comment:4 by , 9 years ago
Hello,
I also see some difference in the lepton and photon multiplicity. The peaks remain same but number of events in some bins decrease with increase in other bins in the second case than in first case. The peak of multiplicity and pt distributions however remains same but the number of events,say in the 0 photon bin decreases in the second case than the first. If the neutral particle is by default taken in HCAL deposits then the leptons, photons should not be affected. It looks like a ECAL contribution is also coming on adding the new particle. Am I right in interpreting this in this manner? Is there any part of the code which you can direct me to check the default behaviours?
Thanks & Regards,
Juhi Dutta
comment:5 by , 9 years ago
The calorimeter code is here:
https://github.com/delphes/delphes/blob/master/modules/Calorimeter.cc#L142
The calorimeter deposit are actually influencing leptons and photons since HCAL deposit enter the isolation algorithm. Could it explain what you observe?
Cheers,
Alexandre
comment:6 by , 9 years ago
Hello,
Ok this HCAL contribution might affect the isolation of the objects. I will check that.
Thanks & Regards,
Juhi
comment:7 by , 8 years ago
Hi,
I have a query regarding this issue hence I am reopening this ticket without posting a new one. In the new versions of delphes the pdg check of the new particles (if they are stable according to ROOT's pdg record) has been removed. In some older versions and in the related tickets to the issue I found that for some new particles this check showed the particle unstable and hence rejected the events.
In the newer versions, the particle status which delphes checks, is the one provided by pythia via the STDHEP file?
However delphes does access TParticlePDG *pdgParticle for every particle while reading from the HEP file , so if the new particle name is not familiar to root/delphes but it exists in the pythia stdhep, does it act according to the status information (stable/unstable) as provided by the hep file only? since root's pdg record does not have the new particle pid will that be an issue?
Thanks & Regards,
Juhi
comment:8 by , 8 years ago
Hi Juhi,
Yes, in the new version, Delphes only checks the status that's read from the STDHEP or HepMC files.
However, the if(!pdgParticle)
condition is still in the readers:
https://cp3.irmp.ucl.ac.be/projects/delphes/browser/git/classes/DelphesHepMCReader.cc#L388
https://cp3.irmp.ucl.ac.be/projects/delphes/browser/git/classes/DelphesSTDHEPReader.cc#L507
https://cp3.irmp.ucl.ac.be/projects/delphes/browser/git/classes/DelphesLHEFReader.cc#L265
So, in the new version, if PID isn't found in the ROOT's PDG table, then the particle is rejected.
Best regards,
Pavel
comment:9 by , 8 years ago
Hi,
Thus in order to include new particles with pdg's not mentioned in the root record (pdg_table.txt), I have to remove this line if(!pdgParticle) and make, to avoid the particle being rejected?
Can a condition like the following can be used?
pid!=47 ) continue; (here 47 is the pid of the new particle I am using). |
and also assign the candidate charge and mass by hand? (equivalent to this block:
pdgParticle = fPDG->GetParticle(fPID);
candidate->Charge = pdgParticle ? int(pdgParticle->Charge()/3.0) : -999;
candidate->Mass = fMass;
Thanks & Regards,
Juhi
comment:10 by , 8 years ago
Can a condition like the following can be used?
if(!pdgParticle or pid!=47 ) continue;
Yes, it should be OK.
I think that mass is read from the STDHEP file. The candidate charge should be indeed assigned by hand.
comment:11 by , 8 years ago
Hello
I have to implement a new invisible particle too. I wrote the add EnergyFraction {PDG}{0.0 0.0} and removed the if(!pdgParticle) line, but when I make and run the program it breaks when trying to read the input LHE file with a message of segmentation violation. Is there another change in the code I have to do? I'm using Delphes 3.3.2. The complete error message is
Reading SM_Modificado_MSi45_pdg26_part_delphes_pythia_output.lhe
[----------------------------------------------------------------] (0.00%)
* Break * segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0 0x00007fb59d2aba0c in libc_waitpid (pid=19089, stat_loc=stat_loc
entry=0x7ffd8b9ec3c0, options=options
entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:31
#1 0x00007fb59d231232 in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:148
#2 0x00007fb5a015a063 in TUnixSystem::StackTrace() () from /home/usuario/Particulas/root-6.04.02/lib/libCore.so
#3 0x00007fb5a015c8ac in TUnixSystem::DispatchSignals(ESignals) () from /home/usuario/Particulas/root-6.04.02/lib/libCore.so
#4 <signal handler called>
#5 0x00000000004b9b14 in DelphesLHEFReader::AnalyzeParticle(DelphesFactory*, TObjArray*, TObjArray*, TObjArray*) ()
#6 0x00000000004b9fa7 in DelphesLHEFReader::ReadBlock(DelphesFactory*, TObjArray*, TObjArray*, TObjArray*) ()
#7 0x000000000049082e in main ()
Best regards
Pablo
Hello,
The add EnergyFraction{PDG}{0.0 0.0} should be enough.
If you realize that there is a problem, don't hesitate to contact us !
Cheers,
Alexandre