Skip to content
Snippets Groups Projects
Commit 5812bf36 authored by Sergey Gorbunov's avatar Sergey Gorbunov
Browse files

L1: qa task for trd2d tracking

parent 79f7dda8
No related branches found
No related tags found
1 merge request!920L1: qa task for trd2d tracking
Pipeline #18399 failed
......@@ -393,6 +393,15 @@ void run_reco_L1global(TString input = "", Int_t nTimeSlices = -1, Int_t firstTi
FairTask* globalFindTracks = new CbmL1GlobalFindTracksEvents(globalTrackFinder);
run->AddTask(globalFindTracks);
std::cout << "-I- " << myName << ": Added task " << globalFindTracks->GetName() << std::endl;
if (debugWithMC) {
CbmMatchRecoToMC* match2 = new CbmMatchRecoToMC();
run->AddTask(match2);
}
CbmTrackingTrdQa* trdTrackerQa = new CbmTrackingTrdQa;
run->AddTask(trdTrackerQa);
std::cout << "-I- " << myName << ": Added task " << trdTrackerQa->GetName() << std::endl;
}
// ------------------------------------------------------------------------
......
Set(INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}
# ---- Specify include directories -----------------------
set(INCLUDE_DIRECTORIES
# This directory
${CBMROOT_SOURCE_DIR}/reco/qa
# external
${CBMROOT_SOURCE_DIR}/external/xpu/src
# Reco
${CBMROOT_SOURCE_DIR}/reco/base
#QA
${CBMROOT_SOURCE_DIR}/core/qa
# Base
${CBMBASE_DIR}
# Data
${CBMDATA_DIR}
${CBMDATA_DIR}/mvd
${CBMDATA_DIR}/base
${CBMDATA_DIR}/global
${CBMDATA_DIR}/sts
${CBMDATA_DIR}/raw
${CBMDATA_DIR}/mvd
${CBMDATA_DIR}/much
${CBMDATA_DIR}/trd
${CBMDATA_DIR}/tof
# MVD
${CBMROOT_SOURCE_DIR}/mvd
# STS
${CBMDETECTORBASE_DIR}/sts
${CBMDETECTORBASE_DIR}/trd
${CBMROOT_SOURCE_DIR}/reco/detectors/sts
${CBMROOT_SOURCE_DIR}/reco/detectors/sts/unpack
${CBMROOT_SOURCE_DIR}/reco/detectors/sts/qa
${CBMROOT_SOURCE_DIR}/reco/detectors/sts/experimental
)
set(SYSTEM_INCLUDE_DIRECTORIES
${BASE_INCLUDE_DIRECTORIES}
${FLES_IPC_INCLUDE_DIRECTORY} # for fles infos for unpacker
)
# ---- End of include directories ------------------------
Set(SYSTEM_INCLUDE_DIRECTORIES
${BASE_INCLUDE_DIRECTORIES}
${ROOT_INCLUDE_DIR}
......@@ -32,6 +69,7 @@ link_directories(${LINK_DIRECTORIES})
set(SRCS
CbmRecoQa.cxx
CbmTrackingTrdQa.cxx
)
set(LINKDEF RecoQaLinkDef.h)
......@@ -40,6 +78,20 @@ Set(LIBRARY_NAME CbmRecoQa)
Set(DEPENDENCIES
CbmBase CbmData Base Core Hist
Base
CbmBase
CbmData
CbmSimSteer
# CbmGeoSetup
CbmTrdBase
CbmMvd
CbmStsBase
CbmRecoBase
CbmRecoSts
CbmQaBase
Core
Hist
)
GENERATE_LIBRARY()
This diff is collapsed.
/* Copyright (C) 2006-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Sergey Gorbunov [committer] */
// -------------------------------------------------------------------------
// ----- CbmTrackingTrdQa header file -----
// ----- Created 15/08/22 -----
// -------------------------------------------------------------------------
/** CbmTrackingTrdQa.h
*@author S. Gorbunov
**
** Quality check task for Trd tracks
**/
#ifndef CbmTrackingTrdQa_H
#define CbmTrackingTrdQa_H 1
#include "CbmLink.h"
#include "CbmQaHist.h"
#include <FairTask.h>
#include "TH2F.h"
#include "TProfile2D.h"
#include <TFolder.h>
#include <TStopwatch.h>
#include <TVector3.h>
#include "Riostream.h"
class TH1F;
class CbmMCDataArray;
class CbmMCDataManager;
class CbmTimeSlice;
class CbmTrackingTrdQa : public FairTask {
public:
/** Default constructor **/
CbmTrackingTrdQa(Int_t iVerbose = 1);
/** Standard constructor
*@param minHits Minimal number of TrdHits for considered MCTracks
*@param quota True/all hits for track to be considered reconstructed
*@param iVerbose Verbosity level
**/
CbmTrackingTrdQa(Int_t minHits, Double_t quota, Int_t iVerbose);
/** Destructor **/
virtual ~CbmTrackingTrdQa();
/** Set parameter containers **/
virtual void SetParContainers();
/** Initialisation **/
virtual InitStatus Init();
/** Reinitialisation **/
virtual InitStatus ReInit();
/** Execution **/
virtual void Exec(Option_t* opt);
private:
/** Finish **/
virtual void Finish();
/** Read the geometry parameters **/
InitStatus GetGeometry();
/** Get the target node from the geometry **/
void GetTargetPosition();
/** Create histograms **/
void CreateHistos();
/** Reset histograms and counters **/
void Reset();
// collect id's of MC events participating to the data
void CollectMcEvents(TClonesArray* Matches);
/** Fill a map from MCTrack index to number of corresponding TrdHits **/
void FillHitMap();
/** Fill a map from MCTrack index to matched GlobalTrack index
*@param nRec Number of reconstructed tracks (return)
*@param nGhosts Number of ghost tracks (return)
*@param nClones Number of clone tracks (return)
**/
void FillTrackMatchMap(Int_t& nRec, Int_t& nGhosts, Int_t& nClones);
/** Divide histograms (reco/all) with correct error for the efficiency
*@param histo1 reconstructed tracks
*@param histo2 all tracks (normalisation)
*@param histo3 efficiency
**/
void DivideHistos(TH1* histo1, TH1* histo2, TH1* histo3);
struct McTrackInfo {
std::map<Int_t, Int_t> fHitMap = {}; /// Trd station -> number of attached hits
Int_t fGlobalTrackMatch = -1; /// matched GlobalTrack index
Int_t fTrdTrackMatch = -1; /// matched TrdTrack index
Double_t fQuali = 0.; /// percentage of matched hits
Int_t fMatchedNHitsAll = 0; /// number of matched hits
Int_t fMatchedNHitsTrue = 0; /// number of matched hits
Bool_t fIsAccepted {0};
Int_t fNtimesReconstructed {0};
Bool_t fIsPrimary {0};
Bool_t fIsFast {0};
Bool_t fIsLong {0};
Double_t fPt {0.};
};
McTrackInfo& getMcTrackInfo(const CbmLink& link)
{
assert(fMcTrackInfoMap.find(link) != fMcTrackInfoMap.end());
return fMcTrackInfoMap[link];
}
std::map<CbmLink, McTrackInfo> fMcTrackInfoMap = {}; //! map track link -> track info
/// Setup
FairRootManager* fManager = nullptr; //!
CbmMCDataManager* fMcManager = nullptr; //!
CbmTimeSlice* fTimeSlice = nullptr; //!
/// MC tracks
CbmMCDataArray* fMCTracks = nullptr; //! MCtrack
/// Trd
Int_t fTrdNstations = 0; // Number of Trd stations
CbmMCDataArray* fTrdPoints = nullptr; //! TrdPoints
TClonesArray* fTrdHits = nullptr; //! TrdHits
TClonesArray* fTrdHitMatch = nullptr; //! TrdHitMatch
TClonesArray* fGlobalTracks = nullptr; //! GlobalTrack
TClonesArray* fGlobalTrackMatches = nullptr; //! GlobalTrackMatch
TClonesArray* fTrdTracks = nullptr; //! TrdTrack
TClonesArray* fTrdTrackMatches = nullptr; //! TrdTrackMatch
/** Geometry parameters **/
TVector3 fTargetPos = {0., 0., 0.}; // Target centre position
/** Task parameters **/
Int_t fMinStations = 4; // Minimal number of stations with hits for considered MCTrack
Double_t fQuota = 0.7; // True/all hits for track to be considered reconstructed
TFolder fOutFolder = {"TrackingTrdQa", "TrackingTrdQa"}; /// output folder with histos and canvases
/** Histograms **/
// eff. vs. XY
std::vector<CbmQaHist<TProfile2D>> fhStationEffXY;
// eff. vs. pt, all
TH1F* fhPtAccAll = nullptr;
TH1F* fhPtRecAll = nullptr;
TH1F* fhPtEffAll = nullptr;
// eff. vs. pt, vertex
TH1F* fhPtAccPrim = nullptr;
TH1F* fhPtRecPrim = nullptr;
TH1F* fhPtEffPrim = nullptr;
// eff. vs. pt, non-vertex
TH1F* fhPtAccSec = nullptr;
TH1F* fhPtRecSec = nullptr;
TH1F* fhPtEffSec = nullptr;
// eff. vs. np, all
TH1F* fhNpAccAll = nullptr;
TH1F* fhNpRecAll = nullptr;
TH1F* fhNpEffAll = nullptr;
// eff. vs. np, vertex
TH1F* fhNpAccPrim = nullptr;
TH1F* fhNpRecPrim = nullptr;
TH1F* fhNpEffPrim = nullptr;
// eff. vs. np, non-vertex
TH1F* fhNpAccSec = nullptr;
TH1F* fhNpRecSec = nullptr;
TH1F* fhNpEffSec = nullptr;
// eff. vs. z, non-vertex
TH1F* fhZAccSec = nullptr;
TH1F* fhZRecSec = nullptr;
TH1F* fhZEffSec = nullptr;
// # hits of clones and ghosts
TH1F* fhNhClones = nullptr;
TH1F* fhNhGhosts = nullptr;
/** List of histograms **/
TList* fHistoList = nullptr;
/** Counters **/
Int_t fNAll = 0;
Int_t fNAccAll = 0;
Int_t fNAccPrim = 0;
Int_t fNAccFast = 0;
Int_t fNAccFastLong = 0;
Int_t fNAccSec = 0;
Int_t fNRecAll = 0;
Int_t fNRecPrim = 0;
Int_t fNRecFast = 0;
Int_t fNRecFastLong = 0;
Int_t fNRecSec = 0;
Int_t fNGhosts = 0;
Int_t fNClones = 0;
Int_t fNEvents = 0; /** Number of events with success **/
Int_t fNEventsFailed = 0; /** Number of events with failure **/
Double_t fTime = 0.; /** Total real time used for good events **/
/** Timer **/
TStopwatch fTimer = {};
CbmTrackingTrdQa(const CbmTrackingTrdQa&);
CbmTrackingTrdQa operator=(const CbmTrackingTrdQa&);
ClassDef(CbmTrackingTrdQa, 0);
};
#endif
......@@ -11,5 +11,6 @@
#pragma link off all functions;
#pragma link C++ class CbmRecoQa + ;
#pragma link C++ class CbmTrackingTrdQa + ;
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment