#ifndef PndTrkComparisonMCtruth_H #define PndTrkComparisonMCtruth_H 1 // #include "FairRootManager.h" #include "PndTrkVectors.h" #include "PndMCTrack.h" // Root includes #include "TROOT.h" #include "TClonesArray.h" struct PndTrkComparisonMCtruth_io_Data{ Double_t Bfield; Short_t *Charge; Double_t Cvel; Short_t *daTrackFoundaTrackMC; Double_t DIMENSIONSciTil ; Double_t Errorsqpixel; Double_t Errorsqstrip; Double_t *FI0; TClonesArray *fMCTrackArray; TClonesArray *fMvdMCPointArray; Short_t fSciTilMaxNumber; TClonesArray *fSciTHitArray; TClonesArray *fSciTPointArray; TClonesArray *fSttPointArray; FILE *HANDLE; FILE *HANDLE2; Double_t *info; int istampa; int IVOLTE; Double_t *KAPPA; bool *keepit; bool *InclusionListStt; Short_t *ListMvdPixelHitsinTrack; Short_t *ListMvdStripHitsinTrack; Short_t *ListSciTilHitsinTrack; Short_t *ListSttParHitsinTrack; Short_t *ListSttSkewHitsinTrack; Short_t *ListTrackCandHit; Short_t *ListTrackCandHitType; int MAXMCTRACKS; int MAXMVDPIXELHITS; int MAXMVDPIXELHITSINTRACK; int Maxmvdmcpoints; int MAXMVDSTRIPHITS; int MAXMVDSTRIPHITSINTRACK; int MAXSCITILHITS; int MAXSCITILHITSINTRACK; int MAXSTTHITS; int MAXSTTHITSINTRACK; int MAXTRACKSPEREVENT; Short_t *MCMvdPixelAloneList; Short_t *MCMvdStripAloneList; Short_t *MCParalAloneList; Short_t *MCSkewAloneList; Double_t *MCSkewAloneX; // dimension : [MAXSTTHITS] Double_t *MCSkewAloneY; // dimension : [MAXSTTHITS] Short_t *MvdPixelCommonList; Short_t *MvdPixelSpuriList; Short_t *MCSciTilAloneList; // equivalent to a matrix // [nTotalCandidates][nSciTilHits]; Short_t *MvdStripCommonList; Short_t *MvdStripSpuriList; Short_t *nHitsInMCTrack; Short_t *nHitsInSciTile; Short_t *nMCMvdPixelAlone; Short_t *nMCMvdStripAlone; Short_t *nMCParalAlone; Short_t *nMCSciTilAlone; Short_t *nMCSkewAlone; Short_t *nMvdPixelCommon; Short_t *nMvdPixelHitsinTrack; Short_t *nMvdStripHitsinTrack; Short_t nMvdPixelHit; Short_t *nMvdPixelSpuriinTrack; Short_t *nMvdStripCommon; Short_t nMvdStripHit; Short_t *nMvdStripSpuriinTrack; Short_t *nParalCommon; Short_t *nSciTilCommon; Short_t nSciTilHits; Short_t *nSciTilHitsinTrack; Short_t *nSciTilSpuriinTrack; Short_t *nSkewCommon; Short_t *nSkewHitsInMCTrack; Short_t *nSpuriParinTrack; Short_t *nSpuriSkewinTrack; Int_t nSttHit; Short_t *nSttParHitsinTrack; Short_t *nSttSkewHitsinTrack; Short_t nTotalCandidates; Short_t *OriginalSciTilList; Double_t *Ox; Double_t *Oy; Short_t *ParalCommonList; Short_t *ParSpuriList; Double_t *R; Double_t *refindexMvdPixel; Double_t *refindexMvdStrip; Short_t *resultFitSZagain; Short_t *SciTilCommonList; // equivalent to a matrix // [nTotalCandidates][MAXSCITILHITSINTRACK]; Short_t *SciTilSpuriList; // equivalent to a matrix // [nTotalCandidates][MAXSCITILHITSINTRACK]; Short_t *SkewCommonList; Short_t *SkewSpuriList; bool *SttSZfit; Double_t *XMvdPixel; Double_t *XMvdStrip; Double_t *XSciTilCenter; Double_t *YMvdPixel; Double_t *YMvdStrip; Double_t *YSciTilCenter; Double_t *ZMvdPixel; Double_t *ZMvdStrip; Double_t *ZSciTilCenter; }; // inizio cambio_in_perl class PndTrkComparisonMCtruth { public: /** Default constructor **/ PndTrkComparisonMCtruth(){}; /** Destructor **/ ~PndTrkComparisonMCtruth(){}; void AssociateFoundTrackstoMCquater( Double_t BFIELD, Double_t CVEL, Vec *daTrackFoundaTrackMC, TClonesArray *fMCTrackArray, Vec *FromPixeltoMCTrack, Vec *FromStriptoMCTrack, Vec *FromSciTiltoMCTrackList, // dimension nSciTilHits*nMCTracks, equivalent to a matrix // of dimension [nSciTilHits][nMCTracks]. Vec *keepit, Vec *info, Vec *ListSttParHitsinTrack, Vec *ListMvdPixelHitsinTrack, Vec *ListSciTilHitsinTrack, Vec *ListSttSkewHitsinTrack, Vec *ListMvdStripHitsinTrack, int MAXMVDPIXELHITSINTRACK, int MAXMVDSTRIPHITSINTRACK, int MAXSCITILHITSINTRACK, int MAXSTTHITSINTRACK, Vec *nFromSciTiltoMCTrack, Vec *nSttParHitsinTrack, int nMCTracks, Vec *nMvdPixelHitsinTrack, Short_t nSciTilHits, Vec *nSciTilHitsinTrack, // dimension [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK] Vec *nSttSkewHitsinTrack, Vec *nMvdStripHitsinTrack, Short_t nTracksFoundSoFar, Vec *Ox, Vec *Oy, Vec *R, Vec *X1, Vec *Y1, Vec *X2, Vec *Y2, Vec *X3, Vec *Y3 ); int ComparisonwithMC( PndTrkComparisonMCtruth_io_Data ioData ); Double_t FindDistance( Double_t Oxx, // center from wich distance is calculated Double_t Oyy, // center from wich distance is calculated Double_t Rr, Double_t tanlow, Double_t tanmid, Double_t tanup, Double_t alfa, // intersection circumference parameter Double_t beta, // intersection circumference parameter Double_t gamma // intersection circumference parameter ); void getMCInfo( Double_t BFIELD, Double_t CVEL, Double_t * Cx, Double_t * Cy, TClonesArray *fMCTrackArray, Int_t MCTrack, Double_t * Rr ); void MvdMatchedSpurioustoTrackCand( Vec *daTrackFoundaTrackMC, Vec *FromPixeltoMCTrack, Vec *FromStriptoMCTrack, Vec *keepit, Vec *ListMvdPixelHitsinTrack, Vec *ListMvdStripHitsinTrack, int MAXMVDPIXELHITSINTRACK, int MAXMVDSTRIPHITSINTRACK, Short_t nMvdPixelHit, Short_t nMvdStripHit, Vec *nMvdPixelHitsinTrack, Vec *nMvdStripHitsinTrack, Short_t nSttTrackCand, // input Vec *nMvdPixelCommon, Vec *MvdPixelCommonList, Vec *nMvdPixelSpuriinTrack, Vec *MvdPixelSpuriList, Vec *nMCMvdPixelAlone, Vec *MCMvdPixelAloneList, Vec *nMvdStripCommon, Vec *MvdStripCommonList, Vec *nMvdStripSpuriinTrack, Vec *MvdStripSpuriList, Vec *nMCMvdStripAlone, Vec *MCMvdStripAloneList ); void MvdMatchtoMC( Double_t ERRORSQPIXEL, Double_t ERRORSQSTRIP, TClonesArray *fMvdMCPointArray, Short_t nMvdMCPoint, int istampa, int IVOLTE, Short_t nMvdPixelHit, Short_t nMvdStripHit, Vec *refindexMvdPixel, Vec *refindexMvdStrip, Vec *XMvdPixel, Vec *XMvdStrip, Vec *YMvdPixel, Vec *YMvdStrip, Vec *ZMvdPixel, Vec *ZMvdStrip, Vec *FromPixeltoMCTrack, Vec *FromStriptoMCTrack ); void SciTilMatchtoMC( Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, TClonesArray *fMCTrackArray, Vec *FromSciTiltoMCTrackList, TClonesArray *fSciTHitArray, Short_t fSciTilMaxNumber, TClonesArray *fSciTPointArray, Vec *nFromSciTiltoMCTrack, Short_t *nHitsInSciTile, int nMCTracks, Short_t nSciTilHits, Short_t *OriginalSciTilList, Vec *XSciTilCenter, Vec *YSciTilCenter, Vec *ZSciTilCenter ); void SciTilMatchedSpurioustoTrackCand( Vec *daTrackFoundaTrackMC, Vec *FromSciTiltoMCTrackList, // of dimension [nSciTilHits][nMCTracks] Vec *keepit, Vec *ListSciTilHitsinTrack, // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK] int MAXSCITILHITSINTRACK, // input Short_t *MCSciTilAloneList, // output; equivalent to a matrix of dimension // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK] Vec *nFromSciTiltoMCTrack, Short_t *nMCSciTilAlone, // output int nMCTracks, // input Short_t nSciTilHits, // input Vec *nSciTilHitsinTrack, Short_t *nSciTilCommon, // output Short_t *nSciTilSpuriinTrack, // output Short_t nSttTrackCand, // input Short_t *SciTilCommonList, // output; equivalent to a matrix of dimension // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK] Short_t *SciTilSpuriList // output; equivalent to a matrix of dimension // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]. ); void stampaMCTracks( Double_t BFIELD, Double_t CVEL, TClonesArray* fMCTrackArray, int nMCTracks ); void SttMatchedSpurious( Vec *daTrackFoundaTrackMC, Vec *InclusionListStt, Vec *info, Vec *keepit, int MAXSTTHITS, int MAXSTTHITSINTRACK, int MAXTRACKSPEREVENT, Vec *ListSttParHitsinTrack, Vec *ListSttSkewHitsinTrack, Vec *MCParalAloneList, Vec *MCSkewAloneList, Vec *nHitsInMCTrack, Vec *nSttParHitsinTrack, Vec *nMCParalAlone, Vec *nMCSkewAlone, Vec *nParalCommon, Vec *nSkewCommon, Vec *nSkewHitsInMCTrack, Vec *nSttSkewHitsinTrack, Vec *nSpuriParinTrack, Vec *nSpuriSkewinTrack, Short_t nSttHits, Short_t nTracksFoundSoFar, // those found by PR Vec *ParalCommonList, Vec *ParSpuriList, Vec *SkewCommonList, Vec *SkewSpuriList ); // fine cambio_in_perl ClassDef(PndTrkComparisonMCtruth,1); }; #endif