GSI Forum
GSI Helmholtzzentrum für Schwerionenforschung

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 Go to previous messageGo to previous message
MartinJGaluska is currently offline  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.
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: [FIXED] PndAnalysis::McTruthMatch always returns false, again ....
Next Topic: [FIXED] Bug in RhoCandList (?)
Goto Forum:
  


Current Time: Sun Dec 08 07:41:31 CET 2019

Total time taken to generate the page: 0.02144 seconds