PandaRoot
PndTrkComparisonMCtruth.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef PndTrkComparisonMCtruth_H
14 #define PndTrkComparisonMCtruth_H 1
15 
16 // #include "FairRootManager.h"
17 #include "PndTrkVectors.h"
18 #include "PndMCTrack.h"
19 // Root includes
20 #include "TROOT.h"
21 #include "TClonesArray.h"
22 
24  Double_t Bfield;
25  Short_t *Charge;
26  Double_t Cvel;
28  Double_t DIMENSIONSciTil;
29  Double_t Errorsqpixel;
30  Double_t Errorsqstrip;
31  Double_t *FI0;
32  TClonesArray *fMCTrackArray;
33  TClonesArray *fMvdMCPointArray;
35  TClonesArray *fSciTHitArray;
36  TClonesArray *fSciTPointArray;
37  TClonesArray *fSttPointArray;
38  FILE *HANDLE;
39  FILE *HANDLE2;
40  Double_t *info;
41  int istampa;
42  int IVOLTE;
43  Double_t *KAPPA;
44  bool *keepit;
51  Short_t *ListTrackCandHit;
66  Short_t *MCParalAloneList;
67  Short_t *MCSkewAloneList;
68  Double_t *MCSkewAloneX; // dimension : [MAXSTTHITS]
69  Double_t *MCSkewAloneY; // dimension : [MAXSTTHITS]
72  Short_t *MCSciTilAloneList; // equivalent to a matrix
73  // [nTotalCandidates][nSciTilHits];
76  Short_t *nHitsInMCTrack;
77  Short_t *nHitsInSciTile;
78  Short_t *nMCMvdPixelAlone;
79  Short_t *nMCMvdStripAlone;
80  Short_t *nMCParalAlone;
81  Short_t *nMCSciTilAlone;
82  Short_t *nMCSkewAlone;
83  Short_t *nMvdPixelCommon;
86  Short_t nMvdPixelHit;
88  Short_t *nMvdStripCommon;
89  Short_t nMvdStripHit;
91  Short_t *nParalCommon;
92  Short_t *nSciTilCommon;
93  Short_t nSciTilHits;
96  Short_t *nSkewCommon;
98  Short_t *nSpuriParinTrack;
100  Int_t nSttHit;
105  Double_t *Ox;
106  Double_t *Oy;
107  Short_t *ParalCommonList;
108  Short_t *ParSpuriList;
109  Double_t *R;
110  Double_t *refindexMvdPixel;
111  Double_t *refindexMvdStrip;
113  Short_t *SciTilCommonList; // equivalent to a matrix
114  // [nTotalCandidates][MAXSCITILHITSINTRACK];
115  Short_t *SciTilSpuriList; // equivalent to a matrix
116  // [nTotalCandidates][MAXSCITILHITSINTRACK];
117  Short_t *SkewCommonList;
118  Short_t *SkewSpuriList;
119  bool *SttSZfit;
120  Double_t *XMvdPixel;
121  Double_t *XMvdStrip;
122  Double_t *XSciTilCenter;
123  Double_t *YMvdPixel;
124  Double_t *YMvdStrip;
125  Double_t *YSciTilCenter;
126  Double_t *ZMvdPixel;
127  Double_t *ZMvdStrip;
128  Double_t *ZSciTilCenter;
129 };
130 
131 // inizio cambio_in_perl
132 
134 
135  public:
140 
141  void AssociateFoundTrackstoMCquater(Double_t BFIELD, Double_t CVEL, Vec<Short_t> *daTrackFoundaTrackMC, TClonesArray *fMCTrackArray, Vec<Int_t> *FromPixeltoMCTrack,
142  Vec<Int_t> *FromStriptoMCTrack, Vec<int> *FromSciTiltoMCTrackList,
143  // dimension nSciTilHits*nMCTracks, equivalent to a matrix
144  // of dimension [nSciTilHits][nMCTracks].
149  // dimension [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]
152 
153  );
154 
155  int ComparisonwithMC(PndTrkComparisonMCtruth_io_Data ioData);
156 
157  Double_t FindDistance(Double_t Oxx, // center from wich distance is calculated
158  Double_t Oyy, // center from wich distance is calculated
159  Double_t Rr, Double_t tanlow, Double_t tanmid, Double_t tanup,
160  Double_t alfa, // intersection circumference parameter
161  Double_t beta, // intersection circumference parameter
162  Double_t gamma // intersection circumference parameter
163  );
164  void getMCInfo(Double_t BFIELD, Double_t CVEL, Double_t *Cx, Double_t *Cy, TClonesArray *fMCTrackArray, Int_t MCTrack, Double_t *Rr);
165 
166  void MvdMatchedSpurioustoTrackCand(Vec<Short_t> *daTrackFoundaTrackMC, Vec<Int_t> *FromPixeltoMCTrack, Vec<Int_t> *FromStriptoMCTrack, Vec<bool> *keepit,
167  Vec<Short_t> *ListMvdPixelHitsinTrack, Vec<Short_t> *ListMvdStripHitsinTrack, int MAXMVDPIXELHITSINTRACK, int MAXMVDSTRIPHITSINTRACK,
168  Short_t nMvdPixelHit, Short_t nMvdStripHit, Vec<Short_t> *nMvdPixelHitsinTrack, Vec<Short_t> *nMvdStripHitsinTrack,
169  Short_t nSttTrackCand, // input
170 
173 
176 
177  void MvdMatchtoMC(Double_t ERRORSQPIXEL, Double_t ERRORSQSTRIP, TClonesArray *fMvdMCPointArray, Short_t nMvdMCPoint, int istampa, int IVOLTE, Short_t nMvdPixelHit,
180  Vec<Int_t> *FromStriptoMCTrack);
181 
182  void SciTilMatchtoMC(Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, TClonesArray *fMCTrackArray, Vec<int> *FromSciTiltoMCTrackList, TClonesArray *fSciTHitArray,
183  Short_t fSciTilMaxNumber, TClonesArray *fSciTPointArray, Vec<int> *nFromSciTiltoMCTrack, Short_t *nHitsInSciTile, int nMCTracks, Short_t nSciTilHits,
185 
186  );
187 
188  void SciTilMatchedSpurioustoTrackCand(Vec<Short_t> *daTrackFoundaTrackMC, Vec<int> *FromSciTiltoMCTrackList,
189  // of dimension [nSciTilHits][nMCTracks]
190  Vec<bool> *keepit, Vec<Short_t> *ListSciTilHitsinTrack,
191  // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]
192  int MAXSCITILHITSINTRACK, // input
193  Short_t *MCSciTilAloneList, // output; equivalent to a matrix of dimension
194  // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]
195  Vec<int> *nFromSciTiltoMCTrack,
196  Short_t *nMCSciTilAlone, // output
197  int nMCTracks, // input
198  Short_t nSciTilHits, // input
199  Vec<Short_t> *nSciTilHitsinTrack,
200  Short_t *nSciTilCommon, // output
201  Short_t *nSciTilSpuriinTrack, // output
202  Short_t nSttTrackCand, // input
203  Short_t *SciTilCommonList, // output; equivalent to a matrix of dimension
204  // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]
205  Short_t *SciTilSpuriList // output; equivalent to a matrix of dimension
206  // [MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK].
207  );
208 
209  void stampaMCTracks(Double_t BFIELD, Double_t CVEL, TClonesArray *fMCTrackArray, int nMCTracks);
210 
211  void SttMatchedSpurious(Vec<Short_t> *daTrackFoundaTrackMC, Vec<bool> *InclusionListStt, Vec<Double_t> *info, Vec<bool> *keepit, int MAXSTTHITS, int MAXSTTHITSINTRACK,
212  int MAXTRACKSPEREVENT, Vec<Short_t> *ListSttParHitsinTrack, Vec<Short_t> *ListSttSkewHitsinTrack, Vec<Short_t> *MCParalAloneList,
216  Short_t nTracksFoundSoFar, // those found by PR
218 
219  );
220 
221  // fine cambio_in_perl
222 
223  ClassDef(PndTrkComparisonMCtruth, 1);
224 };
225 
226 #endif
const Double_t BFIELD
const Double_t ERRORSQSTRIP
const int MAXSTTHITSINTRACK
const Double_t CVEL
const Double_t ERRORSQPIXEL
const Double_t DIMENSIONSCITIL