// ------------------------------------------------------------------------- // ----- CbmSttFitTracksQa header file ----- // ----- Created 30/03/06 by R. Castelijns ----- // ------------------------------------------------------------------------- /** CbmSttFitTracksQa.h *@author R.Castelijns ** ** Quality check task for CbmSttFitTracks **/ #ifndef CBMSTTFITTRACKSQA_H #define CBMSTTFITTRACKSQA_H 1 #include "map.h" #include "CbmTask.h" #include "CbmMCTrack.h" #include "CbmSttTrack.h" #include "CbmSttVertex.h" #include "TH1.h" #include "TH2.h" #include using std::vector; class TClonesArray; class CbmSttFitTracksQa : public CbmTask { public: /** Default constructor **/ CbmSttFitTracksQa(); /** Standard constructor *@param minPoints Minimal number of MCPoints for considered MCTracks *@param quota True/all hits for track to be considered reconstructed *@param iVerbose Verbosity level **/ CbmSttFitTracksQa(Int_t iVerbose); /** Destructor **/ virtual ~CbmSttFitTracksQa(); /** Set parameter containers **/ virtual void SetParContainers(); /** Initialisation **/ virtual InitStatus Init(); /** Reinitialisation **/ virtual InitStatus ReInit(); /** Execution **/ virtual void Exec(Option_t* opt); void WriteHistograms(char *filename); void CreateHistograms(); private: /** functions to be moved to a seperate lambda-lambdabar selector task */ Int_t LambdaLambdabarSelector(CbmSttTrack *&proton, CbmSttTrack *&negpion, CbmSttTrack *&antiproton, CbmSttTrack *&pospion); void ConnectTracksToVertices(vector &myTracksVertex1, vector &myTracksVertex1); Bool_t GetTopology(CbmSttVertex *&lambdaVertex, CbmSttVertex *&antilambdaVertex, CbmSttTrack *&proton, CbmSttTrack *&negpion, CbmSttTrack *&antiproton, CbmSttTrack *&pospion, Int_t index); Bool_t CheckKinematics(CbmSttVertex* lambdaVertex, CbmSttVertex* antilambdaVertex, CbmSttTrack *proton, CbmSttTrack *negpion, CbmSttTrack *antiproton, CbmSttTrack *pospion, Double_t &energyBalance); Int_t GetVertex(CbmSttTrack *recoTrack, Double_t &recoVertexProtonX, Double_t &recoVertexProtonY, Double_t &recoVertexProtonZ); /** auxiliary functions */ void drawAxis(); void drawDetector(); void drawHits(Int_t trackno); Bool_t rootoutput; Int_t fEventNo; /** Pointers to data arrays **/ TClonesArray* fMCTracks; // MCtracks TClonesArray* fSttTracks; // SttTracks TClonesArray* fMatches; // SttTrackMatches TClonesArray* fSttVertices; // SttVertices TClonesArray* fSttHits; // SttHits /** Geometry parameters **/ TVector3 fTargetPos; // Target centre position TH1F *fLambdaVertexMomentumAngleLambda; TH1F *fLambdaVertexMomentumAngleAntiLambda; TH1F *fLambdaSelectorHits; TH1F *fLambdaSelectorHitsBad; TH1F *fLambdaBadPBarTheta; TH1F *fLambdaGoodPBarTheta; TH1F * fLambdaBadPBarHits; TH1F * fLambdaGoodPBarHits; TH1F *fLambdaProtonChiSquareLong; TH1F *fLambdaPiPlusChiSquareLong; TH1F *fLambdaPiMinusChiSquareLong; TH1F *fLambdaAntiProtonChiSquareLong; TH1F *fLambdaProtonChiSquareRad; TH1F *fLambdaPiPlusChiSquareRad; TH1F *fLambdaPiMinusChiSquareRad; TH1F *fLambdaAntiProtonChiSquareRad; TH1F *fLambdaCosThetaLambdaMc; TH1F *fLambdaCosThetaLambdaReco; TH1F *fLambdaCosThetaAntiLambdaReco; TH1F *fLambdaPhiLambdaReco; TH1F *fLambdaPhiAntiLambdaReco; TH1F *fLambdaOpeningPhiLambdaLambdabarReco; TH1F *fLambdaOpeningThetaLambdaLambdabarReco; TH1F *fLambdaTotalPxReco; TH1F *fLambdaTotalPyReco; TH1F *fLambdaTotalPzReco; TH1F *fLambdaTotalEnReco; TH1F *fLambdaTotalPxMc; TH1F *fLambdaTotalPyMc; TH1F *fLambdaTotalPzMc; TH1F *fLambdaTotalEnMc; TH1F *fLambdaLambdaMomentumX; TH1F *fLambdaLambdaMomentumY; TH1F *fLambdaLambdaMomentumZ; TH1F *fLambdaAntiLambdaMomentumX; TH1F *fLambdaAntiLambdaMomentumY; TH1F *fLambdaAntiLambdaMomentumZ; TH1F *fLambdaInvMassLambda; TH1F *fLambdaInvMassAntiLambda; TH1F *fLambdaInvMassSum; TH1F *fLambdaPiPlusMomentumX; TH1F *fLambdaPiPlusMomentumY; TH1F *fLambdaPiPlusMomentumZ; TH1F *fLambdaPiPlusMomentumPt; TH1F *fLambdaPiPlusMomentumP; TH1F *fLambdaPiMinusMomentumX; TH1F *fLambdaPiMinusMomentumY; TH1F *fLambdaPiMinusMomentumZ; TH1F *fLambdaPiMinusMomentumPt; TH1F *fLambdaPiMinusMomentumP; TH1F *fLambdaProtonMomentumX; TH1F *fLambdaProtonMomentumY; TH1F *fLambdaProtonMomentumZ; TH1F *fLambdaProtonMomentumPt; TH1F *fLambdaProtonMomentumP; TH1F *fLambdaAntiProtonMomentumX; TH1F *fLambdaAntiProtonMomentumY; TH1F *fLambdaAntiProtonMomentumZ; TH1F *fLambdaAntiProtonMomentumPt; TH1F *fLambdaAntiProtonMomentumP; TH1F *fLambdaVertexResolutionX; TH1F *fLambdaVertexResolutionY; TH1F *fLambdaVertexResolutionZ; TH1F *fLambdaVertexResolution; TH1F *fLambdaRecoVertices; TH1F *fLambdaMCVertexProton; TH1F *fLambdaMCVertexAntiProton; TH1F *fLambdaRecoVertexProton; TH1F *fLambdaRecoVertexAntiProton; TH1F *fLambdaRecoVertexSum; TH1F *fLambdaRecoTracks; TH1F *fLambdaRecoTracksAbove; TH1F *fLambdaHitsPerTrack; TH1F *fLambdaParticleTypes; TH1F *fLambdaParticleOrigins; TH1F *fLambdaRecoTracksAnnihilation; TH1F *fLambdaRecoTracksPionDecay; TH1F *fLambdaRecoTracksGood; TH1F *fLambdaHitsPerTrackAntiproton; TH1F *fLambdaHitsPerTrackPiminus; TH1F *fLambdaHitsPerTrackEplus; TH1F *fLambdaHitsPerTrackMuplus; TH1F *fLambdaHitsPerTrackProton; TH1F *fLambdaHitsPerTrackPiplus; TH1F *fLambdaHitsPerTrackEminus; TH1F *fLambdaHitsPerTrackMuminus; TH1F *fLambdaHitsPerTrackUnknown; TH1F *fLambdaParticleOriginsAntiproton; TH1F *fLambdaParticleOriginsPiminus; TH1F *fLambdaParticleOriginsEplus; TH1F *fLambdaParticleOriginsMuplus; TH1F *fLambdaParticleOriginsProton; TH1F *fLambdaParticleOriginsPiplus; TH1F *fLambdaParticleOriginsEminus; TH1F *fLambdaParticleOriginsMuminus; TH1F *fLambdaParticleOriginsUnknown; TH1F *fAlphaResolution; TH1F *fD1Resolution; TH1F *fD0Resolution; TH1F *fPhiResolution; TH1F *fRadiusResolution; TH2F *fAlphaReconVsMc; TH2F *fD1ReconVsMc; TH2F *fD0ReconVsMc; TH2F *fPhiReconVsMc; TH2F *fRadiusReconVsMc; TH1F *fChiSquareLong; TH1F *fChiSquareRad; TH1F *fInvariantMass1; TH1F *fInvariantMass2; TH2F *fInvMassVsEgy1; TH2F *fInvMassVsEgy2; TH1F *fE1; TH1F *fpx1; TH1F *fpy1; TH1F *fpz1; TH1F *fE2; TH1F *fpx2; TH1F *fpy2; TH1F *fpz2; TH1F *fParticleIDBadChiSq; TH1F *fParticleIDGoodChiSq; TH1F *fEnergyBadChiSq; TH1F *fEnergyGoodChiSq; TH1F *fParticleIDGoodChiSqLessThanTF; TH1F *fParticleIDGoodChiSqTwentyFiveToThirty; TH1F *fParticleIDGoodChiSqSeventyToNinety; TH1F *fEnergyAllChiSq; TH1F *fParticleIDBadChiSqLessThanTh; TH1F *fParticleIDBadChiSqNineToEleven; TH1F *fParticleIDBadChiSqFifteenToNineteen; TH1F *fVertexResolutionX; TH1F *fVertexResolutionY; TH1F *fVertexResolutionZ; TH1F *fMomentumResolutionX; TH1F *fMomentumResolutionY; TH1F *fMomentumResolutionZ; TH1F *fPhiTrResolution; TH1F *fThetaResolution; TH1F *fThetaResolutionCut; TH1F *fMomentumResolutionTransPerc; TH1F *fMomentumResolutionTrans; TH1F *fMomentumResolutionTransCut; TH1F *fMomentumResolution; TH2F *fVertexDistributionX; TH2F *fVertexDistributionY; TH2F *fVertexDistributionZ; TH2F *fMomentumDistributionX; TH2F *fMomentumDistributionY; TH2F *fMomentumDistributionZ; TH2F *fPhiTrDistribution; TH2F *fThetaDistribution; TH2F *fMomentumDistributionTrans; TH2F *fMomentumDistribution; TH1F *fXVertexMcMinReco; TH1F *fYVertexMcMinReco; TH1F *fZVertexMcMinReco; ClassDef(CbmSttFitTracksQa,1); }; #endif