Fork me on GitHub

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 Alexandre Mertens, 9 years ago

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

comment:2 by J Dutta, 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 Alexandre Mertens, 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 J Dutta, 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 Alexandre Mertens, 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 J Dutta, 9 years ago

Hello,

Ok this HCAL contribution might affect the isolation of the objects. I will check that.

Thanks & Regards,

Juhi

Last edited 9 years ago by J Dutta (previous) (diff)

comment:7 by J Dutta, 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 Pavel Demin, 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

Last edited 8 years ago by Pavel Demin (previous) (diff)

comment:9 by J Dutta, 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?

if(!pdgParticle
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

Version 0, edited 8 years ago by J Dutta (next)

comment:10 by Pavel Demin, 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 Pablo, 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

Last edited 8 years ago by Pablo (previous) (diff)
Note: See TracTickets for help on using tickets.