9 #include <TMatrixDSym.h> 
   10 #include "TClonesArray.h" 
   16 #include "FairBaseParSet.h" 
   18 #include "FairRootManager.h" 
   20 #include "FairRunAna.h" 
   21 #include "FairRuntimeDb.h" 
   22 #include "FairTrackParH.h" 
   37     : FairTask(
"Cleaning Tracks Task for PANDA Lmd"),
 
   46     : FairTask(
"Cleaning Tracks  Task for PANDA Lmd"),
 
   52   cout << 
"Beam Momentum in this run is " << 
fPbeam << endl;
 
   53   hResponse = 
new TH1D(
"hResponse", 
"", 1e3, -1, 1);
 
   63   FairRootManager* ioman = FairRootManager::Instance();
 
   65     std::cout << 
"-E- PndLmdSigCleanTask::Init: " 
   66               << 
"RootManager not instantiated!" << std::endl;
 
   70   fTrkArray = (TClonesArray*)ioman->GetObject(
"LMDPndTrackFilt");
 
   72     std::cout << 
"-W- PndLmdTrkQTask::Init: " 
   74               << 
" array!" << std::endl;
 
   79   fRecBPTracks = (TClonesArray*)ioman->GetObject(
"GeaneTrackFinal");
 
   81     std::cout << 
"-W- PndLmdSigCleanTask::Init: " 
   82               << 
"No Track after back-propagation" 
   83               << 
" array!" << std::endl;
 
   98     TMVA::Tools::Instance();
 
  101     reader = 
new TMVA::Reader(
"!Color:!Silent");
 
  115     TString prefix = 
"TMVAClassification";
 
  133   std::map<int, std::vector<int> > mcHitMap;  
 
  137     cout << 
" ---- Info: " << 
fEventNr << endl;
 
  143   Int_t counterSigTrk = 0;
 
  144   for (Int_t iN = 0; iN < nGeaneTrks;
 
  146     FairTrackParH* fRes = (FairTrackParH*)
fRecBPTracks->At(iN);
 
  152       isCleanCand = 
CheckXY(&fFittedTrkP);
 
  157     bool isClean = 
Check(fRes);
 
  158     if (isClean == kTRUE && isCleanCand == kTRUE) {
 
  159       new ((*fTrackParFinal)[counterSigTrk])
 
  160           FairTrackParH(*(fRes));  
 
  162       if (
fVerbose > 2) cout << 
"***** isClean TRUE *****" << endl;
 
  164       new ((*fTrackParFinal)[counterSigTrk]) FairTrackParH();  
 
  166       if (
fVerbose > 2) cout << 
"***** isClean FALSE *****" << endl;
 
  169   if (
fVerbose > 2) cout << 
"PndLmdSigCleanTask::Exec END!" << endl;
 
  175     FairTrackParH* fTrk) {  
 
  181     TVector3 MomRecBP = fTrk->GetMomentum();
 
  182     double prec = MomRecBP.Mag();
 
  190   if (abs(prec - 
fPbeam) > 3e-4)
 
  200   TVector3 PosRecBP = fTrk->GetPosition();
 
  203   azrec = float(PosRecBP.Z());
 
  204   TVector3 MomRecBP = fTrk->GetMomentum();
 
  205   aprec = float(MomRecBP.Mag());
 
  206   Double_t lyambda = fTrk->GetLambda();
 
  208   aphrec = float(fTrk->GetPhi());
 
  231   TVector3 MomRecLMD(fFittedTrkP->GetPx(), fFittedTrkP->GetPy(),
 
  232                      fFittedTrkP->GetPz());
 
  233   MomRecLMD *= 1. / MomRecLMD.Mag();
 
  236   if (
fVerbose > 0) cout << 
"!XThFilt!" << endl;
 
  237   double Xref = -19.1 + 1.12 * 1e3 * MomRecLMD.Theta() + 
fdX;
 
  238   double diffX = abs(fFittedTrkP->GetX() - Xref);
 
  240     cout << 
"fFittedTrkP.GetX() = " << fFittedTrkP->GetX() << 
" Xref = " << Xref
 
  241          << 
" diffX = " << diffX << endl;
 
  242   if (diffX > 3.0) dirOKx = 
false;
 
  243   if (
fVerbose > 0) cout << 
"!YPhFilt!" << endl;
 
  244   double Yref = -0.00651 + 0.045 * 1e3 * MomRecLMD.Phi() + 
fdY;
 
  245   double diffY = abs(fFittedTrkP->GetY() - Yref);
 
  247     cout << 
"fFittedTrkP.GetY() = " << fFittedTrkP->GetY() << 
" Yref = " << Yref
 
  248          << 
" diffY = " << diffY << endl;
 
  249   if (diffY > 4.0) dirOKy = 
false;
 
  252   if (dirOKx && dirOKy) res = 
true;
 
virtual InitStatus Init()
TClonesArray * fRecBPTracks
bool CheckXY(FairTrackParP *fTrk)
virtual void Exec(Option_t *opt)
bool Check(FairTrackParH *fTrk)
TClonesArray * fTrackParFinal
bool CheckMom(double prec)
virtual void SetParContainers()
friend F32vec4 fabs(const F32vec4 &a)
static PndGeoHandling * Instance()
ClassImp(PndLmdSigCleanTask)
bool CheckMVA(FairTrackParH *fTrk)
FairTrackParP GetParamFirst()