[Rivet] Jets in DIS

Roman Kogler roman.kogler at desy.de
Wed Oct 19 03:00:46 BST 2011


Hi Andy,

here is a strategy that I would suggest:
Take the first electron (or positron) in the event with status code 0 
and non-negligible pt. If the status code is not available, or not safe 
for some event generators, the non-negligible pt alone should do. In all 
MCs I know, the scattered electron appears in the event record before 
the hadronisation and decay products. So this method should be ok.

Cheers,
    Roman



On 10/18/11 11:20, Andy Buckley wrote:
> Hi Roman,
>
> Thanks for the feedback. What do you suggest as an alternative scheme: 
> highest-energy electron (in what frame)? What is done experimentally? 
> Apologies for the DIS-unawareness!
>
> Cheers,
> Andy
>
>
> On 17/10/11 22:51, Roman Kogler wrote:
>> Dear Andy,
>>
>> I checked out the new Rivet version, thanks for including the boost of
>> the final state to the Breit frame. I'm happy to see that working.
>>
>> However, there is a bug in Rivet when looking for the scattered electron
>> in DIS. The algorithm (DISLepton.cc) looks for the electron (or
>> positron) in the event with the highest value of pz. This works at low
>> Q2 rather well, but at high Q2 this algorithm fails. Here is why:
>> At HERA the +pz direction is defined to be the proton beam direction. So
>> the electron beam has pz=-27.6. At low Q2, where the electron is
>> scattered under small angles, the 'signed value' of the scattered
>> electron is then +pz'. However, at high Q2 the electron can be scattered
>> perpendicular to the beam (pz'=0) or in the forward direction (-pz'). So
>> if there is any other electron in the event present, which goes in the
>> -pz direction, it will be misidentified as the scattered electron. Below
>> is an example for an event generated with Q2~17000, where the scattered
>> electron has been misidentified and the calculated value of Q2 in Rivet
>> is 72.8.
>>
>> Cheers,
>> Roman
>>
>>
>> DISLepton: searching for ID -11 with pz > -1e+09
>> part 0 id = -11 px = -55.7936 py = 67.9235 pz = 73.3469 E = 114.483
>> part 0 id = -11 signed_pz = -73.3469
>> ---> taking 0 as outgoing lepton
>> part 1 id = 211 px = 4.3922 py = -5.36174 pz = 21.1347 E = 22.2426
>> part 2 id = 2212 px = 19.1258 py = -22.3493 pz = 85.5571 E = 90.4775
>> part 3 id = -2212 px = 7.27322 py = -8.24468 pz = 32.7272 E = 34.5373
>> part 4 id = 2112 px = -0.258489 py = 0.0192201 pz = 140.113 E = 140.116
>> part 5 id = 22 px = 0.0752175 py = -0.0810541 pz = 0.527222 E = 0.538693
>> part 6 id = -211 px = 2.95982 py = -3.164 pz = 14.1068 E = 14.7578
>> part 7 id = 130 px = 0.251775 py = -0.163703 pz = 183.251 E = 183.252
>> part 8 id = 211 px = 6.86782 py = -8.30335 pz = 33.2207 E = 34.9249
>> part 9 id = -211 px = 2.33043 py = -2.5695 pz = 10.0595 E = 10.6417
>> part 10 id = 22 px = 0.693957 py = -0.670989 pz = 3.14172 E = 3.28667
>> part 11 id = 22 px = 1.11994 py = -1.31727 pz = 5.41137 E = 5.68088
>> part 12 id = 130 px = -0.151476 py = -0.389603 pz = 18.067 E = 18.0787
>> part 13 id = -321 px = -0.516672 py = -0.553757 pz = 19.2324 E = 19.2536
>> part 14 id = 211 px = 0.0829556 py = 0.0993597 pz = 4.24924 E = 4.2535
>> part 15 id = 130 px = 0.375512 py = -0.621349 pz = 14.7582 E = 14.7844
>> part 16 id = 22 px = -0.0301481 py = -0.00922794 pz = 0.33583 E = 
>> 0.337307
>> part 17 id = 22 px = 0.340224 py = -0.445809 pz = 1.41281 E = 1.52004
>> part 18 id = 11 px = 0.075713 py = -0.141711 pz = 0.556192 E = 0.578934
>> part 19 id = -11 px = 0.124663 py = -0.154993 pz = 0.645015 E = 0.674987
>> part 19 id = -11 signed_pz = -0.645015
>> ---> taking 19 as outgoing lepton
>> part 20 id = 22 px = 0.04499 py = -0.12844 pz = 0.397113 E = 0.419785
>> part 21 id = 22 px = 0.827752 py = -1.19367 pz = 4.91671 E = 5.1268
>> part 22 id = 22 px = 0.748384 py = -1.12375 pz = 4.89815 E = 5.08082
>> part 23 id = 22 px = -0.00267821 py = -0.00925982 pz = 0.0143985 E =
>> 0.0173273
>> part 24 id = 130 px = 0.287098 py = 0.19742 pz = 17.3042 E = 17.3149
>> part 25 id = 130 px = 0.122298 py = -0.0634414 pz = 25.2863 E = 25.2916
>> part 26 id = 22 px = 0.0347235 py = 0.144282 pz = 1.65602 E = 1.66266
>> part 27 id = 22 px = -0.0248541 py = 0.146226 pz = 3.67157 E = 3.67456
>> part 28 id = 211 px = 0.954048 py = -0.963005 pz = 3.13684 E = 3.42006
>> part 29 id = 211 px = 0.235199 py = -0.343671 pz = 1.4502 E = 1.51525
>> part 30 id = -12 px = 1.57995 py = -1.37946 pz = 7.29499 E = 7.59052
>> part 31 id = 11 px = 0.471629 py = -0.856397 pz = 2.71535 E = 2.88599
>> part 32 id = 211 px = -0.0294085 py = -0.547087 pz = 0.758253 E = 
>> 0.94583
>> part 33 id = -211 px = 0.0861909 py = -0.0196154 pz = 0.452828 E = 
>> 0.482023
>> part 34 id = 211 px = 0.225543 py = -0.161993 pz = 0.915438 E = 0.966756
>> part 35 id = -211 px = 0.571015 py = -0.738361 pz = 5.30456 E = 5.38786
>> part 36 id = 211 px = 0.129393 py = -0.267621 pz = 1.02406 E = 1.07542
>> part 37 id = -211 px = 1.77415 py = -1.73558 pz = 7.05777 E = 7.48274
>> part 38 id = 22 px = 0.205595 py = -0.0964995 pz = 1.00644 E = 1.03175
>> part 39 id = 22 px = -0.00465838 py = -0.055959 pz = 0.356084 E = 
>> 0.360484
>> part 40 id = 22 px = 0.567172 py = -0.788086 pz = 3.53189 E = 3.66293
>> part 41 id = 22 px = 0.406857 py = -0.734593 pz = 2.77624 E = 2.90046
>> part 42 id = 211 px = 0.374462 py = -0.325563 pz = 2.74971 E = 2.7976
>> part 43 id = -211 px = 0.206282 py = -0.339635 pz = 0.964825 E = 1.05274
>> part 44 id = -211 px = 1.22403 py = -0.939285 pz = 24.7002 E = 24.7488
>> part 45 id = 211 px = -0.401421 py = 0.084246 pz = 17.7685 E = 17.7737
>> part 46 id = 22 px = 0.657991 py = -0.669357 pz = 29.0299 E = 29.0451
>> part 47 id = 22 px = 0.30748 py = 0.0117005 pz = 5.16715 E = 5.17631
>> part 48 id = 22 px = -0.0346924 py = -0.117068 pz = 6.57012 E = 6.57125
>> part 49 id = 321 px = -0.74251 py = -0.217304 pz = 43.1924 E = 43.2021
>> part 50 id = -321 px = -0.140918 py = -0.269146 pz = 4.47808 E = 4.51544
>> fulfilled phase space cuts, Q2 = 72.8641 y = 0.999457 weight = 51.0074
>> scat. elec: E = 0.674987 theta = 0.299122
>>
>> Here is the code that I used the generate this output. It's the code of
>> DISLepton.cc with some output statements added.
>>
>> cout << "DISLepton: searching for ID " << id << " with pz > " << pzMax
>> << endl;
>> const FinalState& fs = applyProjection<FinalState>(e, "FS");
>> int ipart = 0;
>> foreach (const Particle& p, fs.particles()) {
>>
>> cout << "part " << ipart << " id = " << p.pdgId()
>> << " px = " << p.momentum().px()
>> << " py = " << p.momentum().py()
>> << " pz = " << p.momentum().pz()
>> << " E = " << p.momentum().E() << endl;
>> double pz = _sign * p.momentum().pz();
>> if(p.pdgId() == id && pz > pzMax){
>> cout << "part " << ipart << " id = " << p.pdgId() << " signed_pz = " <<
>> _sign * p.momentum().pz() << endl;
>> cout << " ---> taking " << ipart << " as outgoing lepton " << endl;
>> _outgoing = p;
>> pzMax = pz;
>> }
>> ++ipart;
>> }
>>
>>
>>
>>
>> On 8/15/11 10:17, Andy Buckley wrote:
>>> Hi Roman,
>>>
>>> I'm no DIS expert, but I think that the FinalStateHCM should do
>>> something like that -- is it not acceptable?
>>>
>>> If that is not appropriate, you don't absolutely need to use the
>>> "central registry" aspect of the projection system: you can make your
>>> list of particles, boosted and filtered however you want, in the
>>> analyze() method, and then use the calc() method of a local JetAlg
>>> object to make the jets. Let us know if you need more help with this
>>> direction: we've only recently started providing this sort of access
>>> to projection features without having to register the projections --
>>> sometimes it's necessary, but the normal docs don't describe it!
>>>
>>> Cheers,
>>> Andy
>>>
>>>
>>> On 15/08/11 18:08, Roman Kogler wrote:
>>>> Dear Rivet authors and developers,
>>>>
>>>> I'm trying to implement a new jet analysis in Rivet. The data come 
>>>> from
>>>> H1. The analysis is not published yet, but we are close to the
>>>> publication. It's a measurement of inclusive jet, dijet and trijet 
>>>> cross
>>>> sections in DIS at high Q^2 (for more information have a look at
>>>> H1prelim-11-032).
>>>>
>>>> In this jet analysis jets are found in the Breit frame and I could not
>>>> find a way in Rivet how to do this. What I need is to boost the full
>>>> event to the Breit frame before the jet finding is performed. FastJet
>>>> should then be applied to all final state particles in the Breit 
>>>> frame.
>>>>
>>>> Is there an elegant solution to do this in Rivet?
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>
>>>
>>
>
>


More information about the Rivet mailing list