Home » PANDA » PandaRoot » Analysis » [FIXED] Mc Truth Match
Re: Mc Truth Match [message #15244 is a reply to message #15239] |
Mon, 19 August 2013 17:44 |
MartinJGaluska
Messages: 203 Registered: March 2010 Location: Germany
|
first-grade participant |
From: *physik.uni-giessen.de
|
|
Hi Klaus,
Quote: |
So the reason for the difference is, that tracks with (for whatever reason) mis-reconstructed charge are accepted by ideal PidAlgo, since this one only requires certain pion PID probability without knowledge of charge, whereas the McTruthMatch performes an exact match including correct charge.
|
The same seems to be true when the charge is specified in FillList
theAnalysis->FillList(mcpiplus,"PionLoosePlus","PidAlgoIdealCharged");
which was surprising to me. I used to think that when you use PidAlgoIdealCharged and asked for positively charged particles, then you would only get particles whose charge was correctly identified. However, with a quick check (also over 1000 events with the rho tutorial macros) I find 34 events with differences.
The total results are
pimatchplus = 359 piplus = 374
pimatchminus = 374 piminus = 394
and were obtained with the following code:
pimatchplus.Cleanup();
pimatchminus.Cleanup();
theAnalysis->FillList(mcpiplus,"PionLoosePlus","PidAlgoIdealCharged");
theAnalysis->FillList(mcpiminus,"PionLooseMinus","PidAlgoIdealCharged");
theAnalysis->FillList(piall,"PionAll");
for ( int ii=0 ; ii<piall.GetLength() ; ++ii ){
if ( theAnalysis->McTruthMatch(piall[ii]) ){
if ( 211 == piall[ii]->PdgCode() ){
pimatchplus.Add( piall[ii] );
}
if ( -211 == piall[ii]->PdgCode() ){
pimatchminus.Add( piall[ii] );
}
}
}
// consistency check (show suspicious events)
if ( ( pimatchplus.GetLength()!= mcpiplus.GetLength() ) || ( pimatchminus.GetLength() != mcpiminus.GetLength() ) ){
cout << "evt " << i << endl;
cout << "pimatchplus = " << pimatchplus.GetLength() << " piplus = " << mcpiplus.GetLength() << endl;
cout << "pimatchminus = " << pimatchminus.GetLength() << " piminus = " << mcpiminus.GetLength() << endl;
++nsuspiciousevents;
}
npimatchplus += pimatchplus.GetLength();
npimatchminus += pimatchminus.GetLength();
nmcpiplus += mcpiplus.GetLength();
nmcpiminus += mcpiminus.GetLength();
If the user is aware of these differences, then it should not be a problem, I think, even if the behaviour is a little counter-intuitive when you specify the charge in FillList.
|
|
|
Goto Forum:
Current Time: Sat Dec 14 06:58:11 CET 2024
Total time taken to generate the page: 0.00715 seconds
|