Fork me on GitHub

Opened 5 years ago

Last modified 5 years ago

#1414 new How to

Possibility of preventing leptons (the true electron and muon) from being identified as jets

Reported by: Abdualazem Mohammed Owned by:
Priority: minor Milestone:
Component: Delphes code Version: Delphes 3
Keywords: Cc:

Description

Dear Delphes experts,

I just wanted to make sure if there's something one could do to isolate electrons and muons at truth level from being identified as jets.

I see there's a block for the electron and muon isolation on the ATLAS Delphes card, but I'm not sure if we can use this information for particles at truth level. That's because the generated particles are not yet into the detector stage.

I was thinking of something like the following:

GenParticle *GenLevel;

for(int j=0; j<nevent; j++){
    GenLevel=(GenParticle*) branchGenParticle->At(j);
    TLorentzVector eletmp, StableFinal; 
    if(GenLevel->Status==1&&fabs(GenLevel->PID)==11) eletmp.SetPtEtaPhiE(GenLevel->PT,GenLevel->Eta,GenLevel->Phi,GenLevel->E);

    bool electronIsisolated = false;
    double coneSize = min(0.2, 10.0/eletemp.Pt());
 
    if(GenLevel->Status>=1) StableFinal.SetPtEtaPhiE(GenLevel->PT,GenLevel->Eta,GenLevel->Phi,GenLevel->E);

    if(StableFinal.DeltaPhi(eletemp) < coneSize && StableFinalPt/electonPt <0.2) electronIsisolated = true;

So I usually generate a small ROOT file from the Delphes output file and use it for my analysis. So the plan is to store a variable for the isolation (electronIsisolated) and then use it on the analysis level later. And I want to know if we could also use the same idea for the particles at the detector level. Perhaps, we can relax these variables PTRatioMax and DeltaRMax. Hence use a separate variable to do the isolation.

I'm not sure if that will work so I'll appreciate it if someone can help. Thanks a lot.

Cheers,
Abdualazem.

Change History (1)

comment:1 by Abdualazem Mohammed, 5 years ago

Dear All,

Happy new year, and I hope you had a relaxing holiday!

I got new ideas from "Example3.C", so I'll try to apply track only isolation. I compare each electron and muon to the constituents jets and calculate the ration of all particles momentum on the track and the momentum of electron and muon separately. Like the following:

     Electron *electron;
     Track *track;

     for(int j=0; j<branchElectron->GetEntriesFast(); j++){
        electron = (Electron*) branchElectron->At(j);
        GenLevel = (GenParticle*) electron->Particle.GetObject();

        emomentum.SetPxPyPzE(0.0, 0.0, 0.0, 0.0);
      Jet *Constjet;
      Constjet=(Jet*) branchGenJet->At(j);

     for(int i = 0; i < Constjet->Constituents.GetEntriesFast(); ++i)
      {
        object = Constjet->Constituents.At(i);

        if(object == 0) continue;

        if(object->IsA() == GenParticle::Class())
        {
          GenLevel = (GenParticle*) object;
          emomentum += GenLevel->P4();
        }
        else if(object->IsA() == Track::Class())
        {
          track = (Track*) object;
          emomentum += track->P4();
        }
      }
       eOnTrackTrueJet = emomentum.Pt();
       ePt = electron->PT;
       eIsoValue =  emomentum.Pt()/electron->PT;
      //cout<<" eIsoValue: "<<eIsoValue<<endl;
      //cout<<" ePt: "<<ePt<<" Pt:  "<<emomentum.Pt()<<endl;
      }

But I'm still not sure about it! Can someone please look at it?

Cheers,
Abdualazem.

Note: See TracTickets for help on using tickets.