[Rivet] question of using Rivet. final state radiation and different transverse momentum threshold in ZFinder

Yu-hsiang Chang 張祐祥 index0192 at yahoo.com.tw
Thu May 21 14:07:43 BST 2015


Hi Deepak,
Thanks for your reply and suggestion. It works that requires the event has leading muon pT>14 to make the 2 muons have different pT cuts (14 and 9 GeV). (the way [1])
But later I find another way to do it. I require the 2 muon constituents of Z/gamma to have pT>14 and >9 respectively. (the way[2] )
However, once I count the entries in my histogram, I find way [1] gives me 102 events,and  way [2] gives me 111 events.
And if I print (use "cout") the leading muon size(the # of leading muon) in way[2](from the more entries we know [2] is the loose requirement),sometime it shows it has "zero" leading muon but it still pass [2].
Like below----------------------------------------------------------------------------
Begin processing the 711th record. Run 1, Event 711, LumiSection 1 at 21-May-2015 12:12:24.093 CEST# of leading muon:0# of Z boson:1# of muon from Z:2i:0  i-th muon pT:14.1995i:1  i-th muon pT:12.1323----------------------------------------------------------------------------


Do you know what happens and why [1] and [2] give 2 numbers?
The generator used here is Pythia6 and produce DY to MuMu event. 
The essential code of my Rivet plugin( [1] and [2] ) is shown in below.
Thanks.
Yu-hsiang

[1] The first way: require the leading muon----------------------------------------------------------------------------
    void init() {
      // Full final state       const FinalState fs(-5.0, 5.0);       addProjection(fs, "FS");             // Z finders for muons       const ZFinder zfm(fs, -2.4, 2.4, 9*GeV, PID::MUON, 15*GeV, 1500*GeV);             addProjection(zfm, "ZFM");
       // leading muon        LeadingParticlesFinalState muonfs(FinalState(-2.4, 2.4, 14.0*GeV));       muonfs.addParticleId(PID::MUON);       addProjection(muonfs, "LeadingMuon");
      // Histograms      _hist1MZ_of_MuMu            = bookHisto1D(2, 1, 3);// preFSR detector acc
    }
    void makeCut(const Event& event) {
      // Apply the Z finders and veto if no Z found      const ZFinder& zfm = applyProjection<ZFinder>(event, "ZFM");
      //leading muon      const FinalState& muonfs = applyProjection<FinalState>(event, "LeadingMuon");
      if (zfe.empty() ) vetoEvent;
      // di-muon      if (!zfm.empty() && (muonfs.particles().size() >= 1)  ){          const ParticleVector& z = zfm.bosons();      const ParticleVector& mu = zfm.constituents();      const Particle& leadingMu = muonfs.particles().front();
 cout<< "# of leading muon:"<< muonfs.particles().size()<<endl;cout<< "leading muon pT:"<< leadingMu.pT()<<endl;cout<< "# of Z boson:" << z.size()<<endl; cout<< "# of muon from Z:" << mu.size()<<endl;     for(unsigned int i=0;i<mu.size();i++)     {cout<<"i:"<< i <<"  i-th muon pT:"<<mu[i].pT()<<endl;}
      // Fill histos      const double weight = event.weight();      const double mass_z = z[0].mass();
      _hist1MZ_of_MuMu->fill(mass_z, weight); 
     }//di-muon
 }
    void analyze(const Event& event) {
      makeCut(event);    }----------------------------------------------------------------------------

[2] second way: require the constituents of Z boson.----------------------------------------------------------------------------
    void init() {
      // Full final state       const FinalState fs(-5.0, 5.0);       addProjection(fs, "FS");             // Z finders for muons       const ZFinder zfm(fs, -2.4, 2.4, 0*GeV, PID::MUON, 15*GeV, 1500*GeV);             addProjection(zfm, "ZFM");
       // leading muon        LeadingParticlesFinalState muonfs(FinalState(-2.4, 2.4, 14.0*GeV));       muonfs.addParticleId(PID::MUON);       addProjection(muonfs, "LeadingMuon");
      // Histograms      _hist1MZ_of_MuMu            = bookHisto1D(2, 1, 3);
    }
    void makeCut(const Event& event) {
      // Apply the Z finders and veto if no Z found      const ZFinder& zfm = applyProjection<ZFinder>(event, "ZFM");
      //leading muon      const FinalState& muonfs = applyProjection<FinalState>(event, "LeadingMuon");            if (zfe.empty() ) vetoEvent;            // di-muon      if (!zfm.empty() ){
      const ParticleVector& z = zfm.bosons();      const ParticleVector& mu = zfm.constituents();       if(  (mu[0].pT()>14 && mu[1].pT()>9) || (mu[1].pT()>14 && mu[0].pT()>9) ){
      const Particle& leadingMu = muonfs.particles().front();
      cout<< "# of leading muon:"<< muonfs.particles().size()<<endl;      if (muonfs.particles().size()>0){ cout<< "leading muon pT:"<< leadingMu.pT()<<endl;}
      cout<< "# of Z boson:" << z.size()<<endl;      cout<< "# of muon from Z:" << mu.size()<<endl;      for(unsigned int i=0;i<mu.size();i++)          {cout<<"i:"<< i <<"  i-th muon pT:"<<mu[i].pT()<<endl;}

      // Fill histos      const double weight = event.weight();      const double mass_z = z[0].mass();
      _hist1MZ_of_MuMu->fill(mass_z, weight);      }   }// di-muon}
    void analyze(const Event& event) {
      makeCut(event);    }
---------------------------------------------------------------------------- 


     Deepak Kar <deepak.kar at cern.ch> 於 2015/5/20 (週三) 4:23 PM 寫道﹕
   

 Hi Yu-hsiang,

Please see inline.


> (1) In my Rivet plugin, I use
>
>        const FinalState fs(-5.0, 5.0);
>
> to define a final state, whose rapidity is within -5.0 to 5.0.
> Has the fs undergone the final state radiation(FSR)?
>

Yes, they are final state stable particles after all radiation.

> (2) In my Rivet plugin, I use
>
>        const ZFinder zfm(fs, -2.4, 2.4, 9*GeV, PID::MUON, 15*GeV, 1500*GeV);
>
> to obtain the Z bosob or the virtual photon from 2 final states fs,
> whose particle ID are Muon,
> rapidities are in [-2.4,2.4],
> transverse momentum(pT) are larger than 9 GeV,
> invariant mass are in [15,1500] GeV.
>
> If I want to choose my Z boson from 2 muon,
> but this time the 2 muons are required to different pT thresholds,
> the first Muon is required to have pT> 14 GeV,
> and the second Muon is required to have pT> 9 GeV,
> then how can I achieve it?

>
> Or is there other way to do that instead of using ZFinder?


I can think of  a "dirty" way - select the Z with two muons having 9
GeV, then veto the event
if the leading muon do not have 14 GeV subsequently.

Best,
Deepak

>
> Thanks.
>
> Yu-hsiang
>
> _______________________________________________
> Rivet mailing list
> Rivet at projects.hepforge.org
> https://www.hepforge.org/lists/listinfo/rivet

-- 
Deepak Kar
University of Witwatersrand
Room PM15, School of Physics
(0027) 011-7176958 (office) (0027) 079-8401087 (mobile)

While at CERN:
Building 1, R-016
(0041) 0767321349 (mobile)

While at USA:
(001) 330-998-1500 (mobile)


  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.hepforge.org/lists-archive/rivet/attachments/20150521/7feec255/attachment.html>


More information about the Rivet mailing list