// ------------------------------------------------------------------------- // ----- CbmMvdQa header file ----- // ----- Created 12/01/15 by P. Sitzmann ----- // ------------------------------------------------------------------------- /** CbmMvdQa.h *@author P.Sitzmann * * Selection of Qa functions for the mvd * **/ #ifndef CBMMVDQA_H #define CBMMVDQA_H 1 #include "FairTask.h" class TClonesArray; class TH1F; class TH2F; class FairTrackParam; class CbmMvdDetector; //class CbmLitTrackParam; class CbmVertex; class CbmStsTrack; class CbmMvdQa : public FairTask { public: CbmMvdQa(); CbmMvdQa(const char* name, Int_t iMode = 0, Int_t iVerbose = 0); CbmMvdQa(const CbmMvdQa&) = delete; CbmMvdQa& operator=(const CbmMvdQa&) = delete; ~CbmMvdQa(); void SetMinHitReq(Int_t nrOfHits){fminHitReq = nrOfHits;}; void SetMatches(Int_t MCtrackID, CbmStsTrack* stsTrack); void Exec(Option_t* opt); InitStatus Init(); void Finish(); void SetUseMcQa(){useMcQa = kTRUE;}; void SetUseDigiQa(){useDigiQa = kTRUE;}; void SetUseHitQa(){useHitQa = kTRUE;}; void SetUseTrackQa(){useTrackQa = kTRUE;}; void SetOutFile(TFile* outFile){foutFile = outFile;}; void SetDrawOutput(){fdraw = kTRUE;}; private: TFile* foutFile; Int_t fNHitsOfLongTracks; Int_t fEventNumber; Int_t fminHitReq; Float_t fMvdRecoRatio; Int_t fBadTrack; Int_t fUsedTracks; Int_t fnrOfMergedHits; Int_t fFirstMvdPos; Int_t fnrTrackslowP; Int_t fnrTracksHighP; Int_t flow; Int_t fmid; Int_t fhigh; TClonesArray* fStsTrackArray; TClonesArray* fStsTrackArrayP; TClonesArray* fStsTrackArrayN; TClonesArray* fStsTrackMatches; TClonesArray* fGlobalTrackArray; TClonesArray* fListMCTracks; TClonesArray* fMCTrackArrayP; TClonesArray* fMCTrackArrayN; TClonesArray* fMcPoints; TClonesArray* fMvdDigis; TClonesArray* fMvdCluster; TClonesArray* fMvdHits; TClonesArray* fMvdHitMatchArray; TClonesArray* fMvdDigiMatchArray; TClonesArray* fBadTracks; TClonesArray* fInfoArray; static const Int_t f1FSize = 34; static const Int_t f2FSize = 12; TH1F* fMC1F[30]; TH2F* fMC2F[30]; TH1F* fDigi1F[30]; TH2F* fDigi2F[30]; TH1F* fHits1F[30]; TH2F* fHits2F[30]; TH1F* fTracks1F[f1FSize]; TH2F* fTracks2F[f2FSize]; CbmVertex* fPrimVtx; CbmVertex* fSecVtx; CbmMvdDetector* fDetector; Bool_t useMcQa; Bool_t useDigiQa; Bool_t useHitQa; Bool_t useTrackQa; Int_t fMode; Bool_t fdraw; // Double_t GetImpactParameterRadius(CbmLitTrackParam etrack); // Double_t GetImpactParameterX(CbmLitTrackParam etrack); // Double_t GetImpactParameterY(CbmLitTrackParam etrack); // Double_t GetTransverseMomentum(CbmLitTrackParam etrack); // Double_t GetMomentum(CbmLitTrackParam etrack); // Double_t GetMomentumZ(CbmLitTrackParam etrack); // Double_t GetAngle(CbmLitTrackParam etrack); void SetupHistograms(); void SetupMCHistograms(); void SetupDigiHistograms(); void SetupHitHistograms(); void SetupTrackHistograms(); void ExecDigiQa(); void ExecHitQa(); void ExecMCQa(); void ExecTrackQa(); void FinishMCQa(); void FinishDigiQa(); void FinishHitQa(); void FinishTrackQa(); Bool_t HasHitFirstMvd(CbmStsTrack* stsTrack); Bool_t HasHitFirstTrue(Int_t MCtrackID, CbmStsTrack* stsTrack); void GetFirstMCPos(CbmStsTrack* stsTrack, Float_t* pos); void GetFirstMvdHitPos(CbmStsTrack* stsTrack, Float_t* hitPos); ClassDef(CbmMvdQa,1); }; #endif