17 #include "TClonesArray.h"
21 #include "FairRootManager.h"
35 #define PIDMVA_ASSOCIATORT_DEBUG 0
38 #if (PIDMVA_ASSOCIATORT_DEBUG != 0)
40 void printResult(std::map<std::string,float>&
res)
42 std::cout <<
"\n\t================================== \n";
43 for( std::map<std::string,float>::iterator ii=res.begin();
44 ii != res.end(); ++ii)
46 std::cout <<
"\t" << (*ii).first
47 <<
"\t=> " << (*ii).second
50 std::cout <<
"\n\t================================== \n";
60 : FairTask(
"PndPidMvaAssociatorTaskSTD"),
62 fVarNames (
std::vector<
std::string>()),
63 fClassNames(
std::vector<
std::string>()),
64 fWeightsFileName(
std::string(getenv(
"VMCWORKDIR")) +
std::string(
"/tools/MVA/PndMVAWeights/")),
71 fPidChargedProb(new TClonesArray(
"PndPidProbability")),
73 fMethodName(
"UNKNOWN_METHOD")
89 fVarNames (
std::vector<
std::string>()),
90 fClassNames(
std::vector<
std::string>()),
91 fWeightsFileName(
std::string(getenv(
"VMCWORKDIR")) +
std::string(
"/tools/MVA/PndMVAWeights/")),
98 fPidChargedProb(new TClonesArray(
"PndPidProbability")),
100 fMethodName(
"UNKNOWN_METHOD")
116 std::cout<<
"<INFO> Default Weights path is set to "
158 std::cout <<
"<-I-> InitStatus PndPidMvaAssociatorTask::Init()\n";
160 fManager = FairRootManager::Instance();
162 std::cerr <<
"<ERROR> PndPidMvaAssociatorTask::Init:\n"
163 <<
"\t Could not init FairRootManager."
172 std::cerr <<
"<ERROR> PndPidMvaAssociatorTask::Init: No PidChargedCand there!"
200 std::cerr <<
"<Error> Failed to initialize TMVA_MLP classifier."
209 std::cout <<
"<INFO> TMVA_MLP initialized using " << fWeightsFileName <<
'\n';
221 std::cerr <<
"<Error> Failed to initialize TMVA_BDT classifier."
230 std::cout <<
"<INFO> TMVA_BDT initialized using " << fWeightsFileName <<
'\n';
242 std::cerr <<
"<Error> Failed to initialize LVQ classifier."
251 std::cout <<
"<INFO> LVQ initialized using " << fWeightsFileName <<
'\n';
264 std::cerr <<
"<Error> Failed to initialize KNN classifier."
276 std::cout <<
"<INFO> KNN initialized using " << fWeightsFileName <<
'\n';
286 std::cout <<
"<INFO> PndPidMvaAssociatorTask::Init: Success!\n";
296 if(methodNameStr ==
"KNN")
301 else if(methodNameStr ==
"LVQ")
306 else if(methodNameStr ==
"TMVA_MLP")
311 else if(methodNameStr ==
"TMVA_BDT")
318 std::cerr <<
"<ERROR> Unknown Method."
325 std::cout << option <<
'\n';
332 #if ( PIDMVA_ASSOCIATORT_DEBUG != 0 )
333 std::cout <<
"<INFO> Call to Exec with options = " << option
339 std::cout <<
"-I- Start PndPidMvaAssociatorTask.\n";
353 std::cout <<
"-I- PndPidMVAAssociatorTask Ch BEFORE "
362 std::cout <<
"-I- PndPidMVAAssociatorTask Ch AFTER "
391 std::map<std::string, float>
out;
406 #if ( PIDMVA_ASSOCIATORT_DEBUG != 0 )
407 std::cout <<
"****************************************************\n"
409 <<
"\nGetEnergy = " << pidcand.
GetEnergy()
424 std::cout <<
"====================================================\n";
432 if(name ==
"electron")
436 else if(name ==
"muon")
440 else if(name ==
"pion")
444 else if(name ==
"kaon")
448 else if(name ==
"proton")
454 std::cerr <<
"<ERROR> Unknown label (class Name).\n"
462 std::vector<float>* vect =
new std::vector<float>();
477 std::cerr <<
"<WARNING> (p > 0) failed. The event is skipped.\n"
478 <<
"<ER-I> p = " << mom << std::endl;
503 std::cerr <<
"<WARNING> (EmcClusterE9 > 0) failed. The event is skipped.\n"
516 std::cerr <<
"<WARNING> (EmcClusterE25 > 0) failed. The event is skipped.\n"
559 FairRootManager::Instance()->Register(tcaName.c_str(),
"Pid",
fPidChargedProb, kTRUE);
Double_t GetEmcClusterE25() const
TClonesArray * fMCTrack
PndPidProbability TCA for charged particles.
void SetPionPdf(Double_t val)
PndMvaClassifier * fClassifier
MVA classifier object.
Float_t GetSttMeanDEDX() const
Float_t GetEmcCalEnergy() const
virtual void GetMvaValues(std::vector< float > EvtData, std::map< std::string, float > &result)=0
TLorentzVector GetLorentzVector() const
std::vector< float > const * PrepareEvtVect(PndPidCandidate const &pidcand) const
virtual void Exec(Option_t *option)
virtual InitStatus Init()
void SetDefaultWeightsPath()
Double_t GetEnergy() const
void SetKaonPdf(Double_t val)
Double_t GetEmcClusterE9() const
TClonesArray * fPidChargedProb
PndPidCandidate TCA for charged particles.
!< Type definition of the neighbour list.
Float_t GetDrcThetaC() const
void SetElectronPdf(Double_t val)
virtual ~PndPidMvaAssociatorTask()
void SetMuonPdf(Double_t val)
ClassImp(PndPidMvaAssociatorTask) PndPidMvaAssociatorTask
Double_t GetEmcClusterE1() const
std::string fMethodName
Monte-Carlo Truth track TCA.
Double_t GetEmcClusterZ53() const
void SetEvtParam(float const scFact, double const weight)
Double_t GetEmcClusterLat() const
Float_t GetMvdDEDX() const
Double_t GetEmcClusterZ20() const
std::vector< std::string > fVarNames
Variable names container.
void SetKnn(size_t const N)
Set the number of neighbours.
virtual void SetParContainers()
size_t fNumNeigh
Number of neighbors.
void SetProtonPdf(Double_t val)
TClonesArray * fPidChargedCand
void SetClassifier(Mva_MethodType const &methodT)
virtual void Initialize()
std::vector< std::string > fClassNames
Class names container.
Interface definition of the LVQ classifier.
void DoPidMatch(PndPidCandidate &pidcand, PndPidProbability &prob)
std::string fWeightsFileName
Path to the file holding weights (proto-types, examples, ...)
virtual void Initialize()
PndPidMvaAssociatorTask()
TVector3 GetMomentum() const
Mva_MethodType fMethodType
MVA Method name.
FairRootManager * fManager