FairRoot/PandaRoot
Public Member Functions | List of all members
PndTrkPlotMacros Class Reference

#include <PndTrkPlotMacros.h>

Inheritance diagram for PndTrkPlotMacros:

Public Member Functions

 PndTrkPlotMacros ()
 
 ~PndTrkPlotMacros ()
 
void disegnaAssiXY (FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
 
void disegnaSciTilHit (int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
 
void DrawBiHexagonInMacro (Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
 
void DrawHexagonCircleInMacro (Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
 
void SttInfoXYZParal (Vec< Double_t > *info, Short_t infopar, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t KAPPA, Double_t FI0, Short_t Charge, Double_t *Posiz)
 
void WriteAllMacros (PndTrkPlotMacros_InputData In_Put)
 
void WriteMacroAllHitsRestanti (Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Vec< bool > *InclusionListSciTil, Vec< bool > *InclusionListStt, Vec< Double_t > *info, int IVOLTE, Vec< bool > *keepit, Vec< Short_t > *ListTrackCandHit, Vec< Short_t > *ListTrackCandHitType, int MAXMVDPIXELHITS, int MAXMVDPIXELHITSINTRACK, int MAXMVDSTRIPHITS, int MAXMVDSTRIPHITSINTRACK, int MAXSCITILHITSINTRACK, int MAXSTTHITS, int MAXSTTHITSINTRACK, int MAXTRACKSPEREVENT, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHit, Short_t nSttHit, Short_t nSttParHit, Short_t nSttSkewHit, Short_t nSttTrackCand, Vec< Short_t > *nTrackCandHit, Vec< Double_t > *posizSciTil, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
 
void WriteMacroParallelHitsGeneral (Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
 
void WriteMacroParallelHitsGeneralConformalwithMC (Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
 
void WriteMacroParallel_MvdHitsGeneralConformalwithMC (Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
 
void WriteMacroSkewAssociatedHitswithMC (Double_t *ESSE, Double_t *ESSEalone, PndTrkPlotMacros_InputData In_Put, int iNome, int iTrack)
 
void WriteMacroSttParallelAssociatedHitsandMvdwithMC (PndTrkPlotMacros_InputData In_Put, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t primoangolo, Double_t ultimoangolo, Short_t Nhits, int iTrack, int iNome, Short_t daSttTrackaMCTrack, Short_t nMvdPixelHitsAssociatedToSttTra, Short_t nMvdStripHitsAssociatedToSttTra, Short_t nSkewHitsinTrack)
 
 ClassDef (PndTrkPlotMacros, 1)
 

Detailed Description

Definition at line 135 of file PndTrkPlotMacros.h.

Constructor & Destructor Documentation

PndTrkPlotMacros::PndTrkPlotMacros ( )
inline

Default constructor

Definition at line 143 of file PndTrkPlotMacros.h.

143 {};
PndTrkPlotMacros::~PndTrkPlotMacros ( )
inline

Destructor

Definition at line 145 of file PndTrkPlotMacros.h.

145 {};

Member Function Documentation

PndTrkPlotMacros::ClassDef ( PndTrkPlotMacros  ,
 
)
void PndTrkPlotMacros::disegnaAssiXY ( FILE *  MACRO,
double  xmin,
double  xmax,
double  ymin,
double  ymax 
)

Definition at line 21 of file PndTrkPlotMacros.cxx.

28 {
29 // fine cambio_in_perl ;
30 
31  fprintf(MACRO,"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",xmin,0.,xmax,0.,xmin,xmax);
32  fprintf(MACRO,"Assex->SetTitle(\"X\");\n");
33  fprintf(MACRO,"Assex->SetTitleOffset(1.5);\n");
34  fprintf(MACRO,"Assex->Draw();\n");
35  fprintf(MACRO,"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n", 0.,ymin,0.,ymax,ymin,ymax);
36  fprintf(MACRO,"Assey->SetTitle(\"Y\");\n");
37  fprintf(MACRO,"Assey->SetTitleOffset(1.5);\n");
38  fprintf(MACRO,"Assey->Draw();\n");
39 
40 }
Double_t xmax
Double_t xmin
void PndTrkPlotMacros::disegnaSciTilHit ( int  colorcode,
Double_t  DIMENSIONSCITIL,
FILE *  MACRO,
double  posx,
double  posy,
int  ScitilHit,
int  tipo 
)

Definition at line 49 of file PndTrkPlotMacros.cxx.

References L, and sqrt().

59 {
60 // fine cambio_in_perl ;
61  double x1,x2,y1,y2,L,Rr, RR;
62 
63 
64  L=DIMENSIONSCITIL/2.;
65 
66 
67  if(tipo==0){ // SciTil disegnate in XY.
68  Rr = sqrt(posx*posx+posy*posy);
69  x1 = posx + posy*L/Rr;
70  x2 = posx - posy*L/Rr;
71  y1 = posy - posx*L/Rr;
72  y2 = posy + posx*L/Rr;
73  } else if (tipo==1) {// SciTil disegnate in SZ.
74  x1 = posx - L;
75  x2 = posx + L;
76  y1 = posy;
77  y2 = posy;
78  } else { // SciTil disegnate in UV.
79  RR = posx*posx+posy*posy;
80  Rr = sqrt(RR);
81  x1 = posx + posy*L/Rr;
82  x1 /= RR;
83  x2 = posx - posy*L/Rr;
84  x2 /= RR;
85  y1 = posy - posx*L/Rr;
86  y1 /= RR;
87  y2 = posy + posx*L/Rr;
88  y2 /= RR;
89 
90  }
91  fprintf(MACRO,"TLine *Tile%d = new TLine(%f,%f,%f,%f);\n",ScitilHit,x1,y1,x2,y2);
92  fprintf(MACRO,"Tile%d->SetLineColor(%d);\n",ScitilHit,colorcode);
93 
94 
95  if(tipo==0){
96  // disegna in XY.
97  fprintf(MACRO,"Tile%d->SetLineWidth(2);\n",ScitilHit);
98  } else if (tipo==1) {
99  // disegna in SZ.
100  fprintf(MACRO,"Tile%d->SetLineWidth(3);\n",ScitilHit);
101  } else {
102  // disegna in UV.
103  fprintf(MACRO,"Tile%d->SetLineWidth(3);\n",ScitilHit);
104  }
105 
106 
107  fprintf(MACRO,"Tile%d->Draw();\n",ScitilHit);
108 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
const Double_t DIMENSIONSCITIL
void PndTrkPlotMacros::DrawBiHexagonInMacro ( Double_t  vgap,
FILE *  MACRO,
Double_t  Ami,
Double_t  Ama,
Short_t  color,
char *  name 
)

Definition at line 115 of file PndTrkPlotMacros.cxx.

References Double_t, and sqrt().

123 {
124 // fine cambio_in_perl ;
125  Short_t iside;
126 
127  // these are the points defining the sides of the biexhagon on the left(inner).
128  Double_t
129  side_x[] = { -vgap/2., -Ama , -Ama, -vgap/2., -vgap/2., -Ami,
130  -Ami, -vgap/2., -vgap/2.},
131  side_y[] = {(-0.5*vgap+2.*Ama)/sqrt(3.), Ama/sqrt(3.), -Ama/sqrt(3.),
132  -(-0.5*vgap+2.*Ama)/sqrt(3.), -(-0.5*vgap+2.*Ami)/sqrt(3.),
133  -Ami/sqrt(3.), Ami/sqrt(3.), (-0.5*vgap+2.*Ami)/sqrt(3.),
134  (-0.5*vgap+2.*Ama)/sqrt(3.) };
135 
136  // Inner straws left
137  for(iside=0;iside<8;iside++){
138  fprintf(MACRO,
139  "TLine* %sL%d = new TLine(%f,%f,%f,%f);\n",name,
140  iside,side_x[iside],side_y[iside],side_x[iside+1],side_y[iside+1]);
141  fprintf(MACRO,"%sL%d->SetLineColor(%d);\n",name,iside,color);
142  fprintf(MACRO,"%sL%d->SetLineStyle(2);\n",name,iside);
143  fprintf(MACRO,"%sL%d->Draw();\n",name,iside);
144  }
145 
146  // Inner straws right
147  for(iside=0;iside<8;iside++){
148  fprintf(MACRO,
149  "TLine* %sR%d = new TLine(%f,%f,%f,%f);\n",name,
150  iside,-side_x[iside],side_y[iside],-side_x[iside+1],side_y[iside+1]);
151  fprintf(MACRO,"%sR%d->SetLineColor(%d);\n",name,iside,color);
152  fprintf(MACRO,"%sR%d->SetLineStyle(2);\n",name,iside);
153  fprintf(MACRO,"%sR%d->Draw();\n",name,iside);
154  }
155 
156 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t
TString name
void PndTrkPlotMacros::DrawHexagonCircleInMacro ( Double_t  GAP,
FILE *  MACRO,
Double_t  ApotemaMin,
Double_t  Rma,
Short_t  color,
char *  name 
)

Definition at line 162 of file PndTrkPlotMacros.cxx.

References atan2(), Double_t, PI, and sqrt().

170 {
171 // fine cambio_in_perl ;
172  Short_t iside;
173 
174  Double_t angle1, angle2;
175 
176  const double PI=3.141592654;
177 
178  // these are the points defining the sides of the exhagon on the left(outer).
179  Double_t side_x[] = { -GAP/2., -GAP/2. , -ApotemaMin, -ApotemaMin, -GAP/2., -GAP/2. },
180  side_y[] = { sqrt(Rma*Rma-GAP*GAP/4.), (2.*ApotemaMin-0.5*GAP)/sqrt(3.),
181  ApotemaMin/sqrt(3.),
182  -ApotemaMin/sqrt(3.),
183  -(2.*ApotemaMin-0.5*GAP)/sqrt(3.), -sqrt(Rma*Rma-GAP*GAP/4.)};
184 
185 
186  // Outer straws left
187  for(iside=0;iside<5;iside++){
188  fprintf(MACRO,
189  "TLine* %sL%d = new TLine(%f,%f,%f,%f);\n",name,
190  iside,side_x[iside],side_y[iside],side_x[iside+1],side_y[iside+1]);
191  fprintf(MACRO,"%sL%d->SetLineColor(%d);\n",name,iside,color);
192  fprintf(MACRO,"%sL%d->SetLineStyle(2);\n",name,iside);
193  fprintf(MACRO,"%sL%d->Draw();\n",name,iside);
194  }
195 
196  // Outer straws right
197  for(iside=0;iside<5;iside++){
198  fprintf(MACRO,
199  "TLine* %sR%d = new TLine(%f,%f,%f,%f);\n",name,
200  iside,-side_x[iside],side_y[iside],-side_x[iside+1],side_y[iside+1]);
201  fprintf(MACRO,"%sR%d->SetLineColor(%d);\n",name,iside,color);
202  fprintf(MACRO,"%sR%d->SetLineStyle(2);\n",name,iside);
203  fprintf(MACRO,"%sR%d->Draw();\n",name,iside);
204  }
205 
206 
207  // drawing the left circle.
208  angle1 = atan2 ( side_y[0], side_x[0])*180./PI;
209  angle2 = 360. + atan2 ( side_y[4], side_x[4])*180./PI;
210  fprintf(MACRO,"TEllipse* %sCircleL = new TEllipse(0.,0.,%f,%f,%f,%f);\n",
211  name,Rma,Rma,angle1,angle2);
212  fprintf(MACRO,"%sCircleL->SetFillStyle(0);\n",name);
213  fprintf(MACRO,"%sCircleL->SetLineColor(%d);\n",name,color);
214  fprintf(MACRO,"%sCircleL->Draw(\"only\");\n",name);
215 
216 
217  // drawing the right circle.
218  angle2 = atan2 ( side_y[0], -side_x[0])*180./PI;
219  angle1 = atan2 ( side_y[4], -side_x[4])*180./PI;
220  fprintf(MACRO,"TEllipse* %sCircleR = new TEllipse(0.,0.,%f,%f,%f,%f);\n",
221  name,Rma,Rma,angle1,angle2);
222  fprintf(MACRO,"%sCircleR->SetFillStyle(0);\n",name);
223  fprintf(MACRO,"%sCircleR->SetLineColor(%d);\n",name,color);
224  fprintf(MACRO,"%sCircleR->Draw(\"only\");\n",name);
225 
226 
227 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
const Double_t PI
Double_t
TString name
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
void PndTrkPlotMacros::SttInfoXYZParal ( Vec< Double_t > *  info,
Short_t  infopar,
Double_t  Oxx,
Double_t  Oyy,
Double_t  Rr,
Double_t  KAPPA,
Double_t  FI0,
Short_t  Charge,
Double_t Posiz 
)

Definition at line 235 of file PndTrkPlotMacros.cxx.

References Vec< T >::at(), atan2(), Double_t, fabs(), fi, PI, and sqrt().

246 {
247 // fine cambio_in_perl ;
248 
249  Double_t const PI = 3.141592654;
250 
251  Double_t fi, norm, vers[2];
252 
253  vers[0] = Oxx - info->at(infopar*7+0);
254  vers[1] = Oyy - info->at(infopar*7+1);
255  norm = sqrt( vers[0]*vers[0] + vers[1]*vers[1] );
256 
257  if(norm < 1.e-20) {
258  Posiz[0] = -999999999.;
259  return;
260  }
261 
262  if( fabs( Rr - fabs( norm - info->at(infopar*7+3) ) ) // distance trajectory-drift radius
263  <
264  fabs( Rr - (norm + info->at(infopar*7+3)) ) ) {
265 
266  Posiz[0] = info->at(infopar*7+0) + info->at(infopar*7+3)*vers[0]/norm;
267  Posiz[1] = info->at(infopar*7+1) + info->at(infopar*7+3)*vers[1]/norm;
268 
269  } else {
270 
271  Posiz[0] = info->at(infopar*7+0) - info->at(infopar*7+3)*vers[0]/norm;
272  Posiz[1] = info->at(infopar*7+1) - info->at(infopar*7+3)*vers[1]/norm;
273 
274  } // end of if ( fabs( Rr - fabs( Distance - info->at(infopar*7+3) ) ).....
275 
276 
277 
278 
279 // Posiz[0] = info->at(infopar*7+0) + info->at(infopar*7+3)*vers[0]/norm;
280 // Posiz[1] = info->at(infopar*7+1) + info->at(infopar*7+3)*vers[1]/norm;
281 
282  if( fabs(KAPPA)<1.e-20 ){
283  Posiz[2] = -888888888.;
284  return;
285  }
286 
287 
288  fi = atan2(-vers[1],-vers[0]);
289  if(fi<0.) fi += 2.*PI;
290 
291  if ( Charge > 0){
292  if(fi > FI0 ) FI0 += 2.*PI;
293 // Posiz[2] = (FI0-fi)/KAPPA;
294  } else {
295  if(fi < FI0 ) fi += 2.*PI;
296  }
297  Posiz[2] = (fi-FI0)/KAPPA;
298 
299  return;
300 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
const Double_t PI
TFile * fi
Double_t
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
T & at(int index)
Definition: PndTrkVectors.h:54
void PndTrkPlotMacros::WriteAllMacros ( PndTrkPlotMacros_InputData  In_Put)

Definition at line 309 of file PndTrkPlotMacros.cxx.

References PndTrkPlotMacros_InputData::apotemamaxinnerparstraw, APOTEMAMAXINNERPARSTRAW, PndTrkPlotMacros_InputData::apotemamaxskewstraw, APOTEMAMAXSKEWSTRAW, PndTrkPlotMacros_InputData::apotemaminouterparstraw, APOTEMAMINOUTERPARSTRAW, PndTrkPlotMacros_InputData::apotemaminskewstraw, APOTEMAMINSKEWSTRAW, Vec< T >::at(), atan2(), PndTrkPlotMacros_InputData::bfield, BFIELD, PndTrkPlotMacros_InputData::Charge, PndTrkPlotMacros_InputData::cvel, CVEL, PndTrkPlotMacros_InputData::daTrackFoundaTrackMC, PndTrkPlotMacros_InputData::dimensionscitil, DIMENSIONSCITIL, PndTrkPlotMacros_InputData::doMcComparison, Double_t, PndTrkPlotMacros_InputData::FI0, PndTrkPlotMacros_InputData::fMCTrackArray, PndTrkPlotMacros_InputData::fSttPointArray, i, PndTrkPlotMacros_InputData::InclusionListSciTil, PndTrkPlotMacros_InputData::InclusionListStt, PndTrkPlotMacros_InputData::info, PndTrkCTGeometryCalculations::IntersectionSciTil_Circle(), PndTrkPlotMacros_InputData::IVOLTE, PndTrkPlotMacros_InputData::KAPPA, PndTrkPlotMacros_InputData::keepit, PndTrkPlotMacros_InputData::ListMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::ListMvdStripHitsinTrack, PndTrkPlotMacros_InputData::ListSciTilHitsinTrack, PndTrkPlotMacros_InputData::ListSttParHitsinTrack, PndTrkPlotMacros_InputData::ListSttSkewHitsinTrack, PndTrkPlotMacros_InputData::ListTrackCandHit, PndTrkPlotMacros_InputData::ListTrackCandHitType, PndTrkPlotMacros_InputData::MAXMVDPIXELHITS, PndTrkPlotMacros_InputData::MAXMVDPIXELHITSINTRACK, PndTrkPlotMacros_InputData::MAXMVDSTRIPHITS, PndTrkPlotMacros_InputData::MAXMVDSTRIPHITSINTRACK, PndTrkPlotMacros_InputData::MAXSCITILHITS, PndTrkPlotMacros_InputData::MAXSCITILHITSINTRACK, PndTrkPlotMacros_InputData::MAXSTTHITS, PndTrkPlotMacros_InputData::MAXSTTHITSINTRACK, MAXSTTHITSINTRACK, PndTrkPlotMacros_InputData::MAXTRACKSPEREVENT, PndTrkPlotMacros_InputData::MCMvdPixelAloneList, PndTrkPlotMacros_InputData::MCMvdStripAloneList, PndTrkPlotMacros_InputData::MCParalAloneList, PndTrkPlotMacros_InputData::MCSciTilAloneList, PndTrkPlotMacros_InputData::MCSkewAloneList, PndTrkPlotMacros_InputData::MCSkewAloneX, PndTrkPlotMacros_InputData::MCSkewAloneY, PndTrkPlotMacros_InputData::MvdPixelCommonList, PndTrkPlotMacros_InputData::MvdPixelSpuriList, PndTrkPlotMacros_InputData::MvdStripCommonList, PndTrkPlotMacros_InputData::MvdStripSpuriList, CAMath::Nint(), PndTrkPlotMacros_InputData::nMCMvdPixelAlone, PndTrkPlotMacros_InputData::nMCMvdStripAlone, PndTrkPlotMacros_InputData::nMCParalAlone, PndTrkPlotMacros_InputData::nMCSciTilAlone, PndTrkPlotMacros_InputData::nMCSkewAlone, PndTrkPlotMacros_InputData::nMCTracks, PndTrkPlotMacros_InputData::nMvdPixelCommon, PndTrkPlotMacros_InputData::nMvdPixelHit, PndTrkPlotMacros_InputData::nMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::nMvdPixelSpuriinTrack, PndTrkPlotMacros_InputData::nMvdStripCommon, PndTrkPlotMacros_InputData::nMvdStripHit, PndTrkPlotMacros_InputData::nMvdStripHitsinTrack, PndTrkPlotMacros_InputData::nMvdStripSpuriinTrack, PndTrkPlotMacros_InputData::nParalCommon, PndTrkPlotMacros_InputData::nSciTilHits, PndTrkPlotMacros_InputData::nSciTilHitsinTrack, PndTrkPlotMacros_InputData::nSkewCommon, PndTrkPlotMacros_InputData::nSpuriParinTrack, PndTrkPlotMacros_InputData::nSttHit, PndTrkPlotMacros_InputData::nSttParHit, PndTrkPlotMacros_InputData::nSttParHitsinTrack, PndTrkPlotMacros_InputData::nSttSkewHit, PndTrkPlotMacros_InputData::nSttSkewHitsinTrack, PndTrkPlotMacros_InputData::nTotalCandidates, PndTrkPlotMacros_InputData::nTrackCandHit, PndTrkPlotMacros_InputData::Ox, PndTrkPlotMacros_InputData::Oy, PndTrkPlotMacros_InputData::ParalCommonList, PndTrkPlotMacros_InputData::ParSpuriList, PI, PndTrkPlotMacros_InputData::posizSciTil, R, PndTrkPlotMacros_InputData::R, PndTrkPlotMacros_InputData::rstrawdetectormax, RSTRAWDETECTORMAX, PndTrkPlotMacros_InputData::rstrawdetectormin, PndTrkPlotMacros_InputData::SchosenSkew, PndTrkPlotMacros_InputData::sigmaXMvdPixel, PndTrkPlotMacros_InputData::sigmaXMvdStrip, PndTrkPlotMacros_InputData::sigmaYMvdPixel, PndTrkPlotMacros_InputData::sigmaYMvdStrip, PndTrkPlotMacros_InputData::SkewCommonList, VERTICALGAP, PndTrkPlotMacros_InputData::verticalgap, PndTrkPlotMacros_InputData::WDX, PndTrkPlotMacros_InputData::WDY, PndTrkPlotMacros_InputData::WDZ, PndTrkPlotMacros_InputData::XMvdPixel, PndTrkPlotMacros_InputData::XMvdStrip, PndTrkPlotMacros_InputData::YMvdPixel, PndTrkPlotMacros_InputData::YMvdStrip, PndTrkPlotMacros_InputData::ZMvdPixel, and PndTrkPlotMacros_InputData::ZMvdStrip.

313 {
314 
315 
316  bool
317  intersect;
318 
319  Short_t
320  Nint
321  ;
322 
323  int
324  i,
325  j,
326  k
327  ;
328 
329 
330  double const PI = 3.141592654;
331 
332  FairMCPoint *puntator;
333 
334 // marker1 per cambioperl;
335 
336 //--------------- trasformazione in variabili locali;
337  //int MAXMCTRACKS = In_Put.MAXMCTRACKS; //[R.K. 01/2017] unused variable?
338  int MAXMVDPIXELHITS = In_Put.MAXMVDPIXELHITS;
339  int MAXMVDPIXELHITSINTRACK = In_Put.MAXMVDPIXELHITSINTRACK;
340  int MAXMVDSTRIPHITS = In_Put.MAXMVDSTRIPHITS;
341  int MAXMVDSTRIPHITSINTRACK = In_Put.MAXMVDSTRIPHITSINTRACK;
342  //int MAXSCITILHITS = In_Put.MAXSCITILHITS; //[R.K. 01/2017] unused variable?
343  int MAXSCITILHITSINTRACK = In_Put.MAXSCITILHITSINTRACK;
344  int MAXSTTHITS = In_Put.MAXSTTHITS;
346  int MAXTRACKSPEREVENT = In_Put.MAXTRACKSPEREVENT;
347  int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
348  MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
349 
354  Double_t BFIELD = In_Put.bfield;
355 
356  Vec<Short_t> Charge(In_Put.Charge,In_Put.MAXTRACKSPEREVENT,"Charge") ;
357 
358  Double_t CVEL = In_Put.cvel;
359  Vec<Short_t> daTrackFoundaTrackMC(In_Put.daTrackFoundaTrackMC,In_Put.MAXTRACKSPEREVENT,"daTrackFoundaTrackMC") ;
360 
362  bool doMcComparison = In_Put.doMcComparison;
363  Vec<Double_t> FI0(In_Put.FI0,In_Put.MAXTRACKSPEREVENT,"FI0") ;
364 
365  TClonesArray *fMCTrackArray = In_Put.fMCTrackArray;
366  TClonesArray *fSttPointArray = In_Put.fSttPointArray;
367 
368  Vec<Double_t> info(In_Put.info,In_Put.MAXSTTHITS*7,"info") ;
369 
370  Vec<bool> InclusionListSciTil(In_Put.InclusionListSciTil,In_Put.MAXSCITILHITS,"InclusionListSciTil") ;
371  Vec<bool> InclusionListStt(In_Put.InclusionListStt,In_Put.MAXSTTHITS,"InclusionListStt") ;
372  int IVOLTE = In_Put.IVOLTE;
373  Vec<Double_t> KAPPA(In_Put.KAPPA,In_Put.MAXTRACKSPEREVENT,"KAPPA") ;
374  Vec<bool> keepit(In_Put.keepit,In_Put.MAXTRACKSPEREVENT,"keepit") ;
375  //int istampa = In_Put.istampa; //[R.K. 01/2017] unused variable?
376 
377  Vec<Short_t> ListMvdPixelHitsinTrack(In_Put.ListMvdPixelHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXMVDPIXELHITSINTRACK,"ListMvdPixelHitsinTrack") ;
378 
379 
380  Vec<Short_t> ListMvdStripHitsinTrack(In_Put.ListMvdStripHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXMVDSTRIPHITSINTRACK,"ListMvdStripHitsinTrack") ;
381 
382 
383  Vec<Short_t> ListSciTilHitsinTrack(In_Put.ListSciTilHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSCITILHITSINTRACK,"ListSciTilHitsinTrack") ;
384 
385 
386  Vec<Short_t> ListSttParHitsinTrack(In_Put.ListSttParHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ListSttParHitsinTrack") ;
387 
388 
389  Vec<Short_t> ListSttSkewHitsinTrack(In_Put.ListSttSkewHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ListSttSkewHitsinTrack") ;
390 
391 
392  Vec<Short_t> ListTrackCandHit(In_Put.ListTrackCandHit,
393  In_Put.MAXTRACKSPEREVENT*(In_Put.MAXSTTHITSINTRACK
395  In_Put.MAXSCITILHITSINTRACK), "ListTrackCandHit") ;
396 
397  Vec<Short_t> ListTrackCandHitType(In_Put.ListTrackCandHitType,
398  In_Put.MAXTRACKSPEREVENT*(In_Put.MAXSTTHITSINTRACK
400  In_Put.MAXSCITILHITSINTRACK), "ListTrackCandHitType") ;
401 
402  Vec<Short_t> MCMvdPixelAloneList(In_Put.MCMvdPixelAloneList,In_Put.nTotalCandidates*In_Put.nMvdPixelHit,"MCMvdPixelAloneList") ;
403 
404 
405  Vec<Short_t> MCMvdStripAloneList(In_Put.MCMvdStripAloneList,In_Put.nTotalCandidates*In_Put.nMvdStripHit,"MCMvdStripAloneList") ;
406 
407 
408  Vec<Short_t> MCParalAloneList(In_Put.MCParalAloneList,In_Put.MAXTRACKSPEREVENT*In_Put.nSttHit,"MCParalAloneList") ;
409 
410 
411  Vec<Short_t> MCSkewAloneList(In_Put.MCSkewAloneList,In_Put.MAXTRACKSPEREVENT*In_Put.nSttHit,"MCSkewAloneList") ;
412 
413 
414  Vec<Double_t> MCSkewAloneX(In_Put.MCSkewAloneX,In_Put.MAXSTTHITS,"MCSkewAloneX") ;
415  Vec<Double_t> MCSkewAloneY(In_Put.MCSkewAloneY,In_Put.MAXSTTHITS,"MCSkewAloneY") ;
416 
417  Vec<Short_t> MvdPixelCommonList(In_Put.MvdPixelCommonList,In_Put.nTotalCandidates*In_Put.MAXMVDPIXELHITSINTRACK,"MvdPixelCommonList") ;
418 
419 
420  Vec<Short_t> MvdPixelSpuriList(In_Put.MvdPixelSpuriList,In_Put.nTotalCandidates*In_Put.MAXMVDPIXELHITSINTRACK,"MvdPixelSpuriList") ;
421 
422 
423  Vec<Short_t> MvdStripCommonList(In_Put.MvdStripCommonList,In_Put.nTotalCandidates*In_Put.MAXMVDSTRIPHITSINTRACK,"MvdStripCommonList") ;
424 
425 
426  Vec<Short_t> MvdStripSpuriList(In_Put.MvdStripSpuriList,In_Put.nTotalCandidates*In_Put.MAXMVDSTRIPHITSINTRACK,"MvdStripSpuriList") ;
427 
428 
429 
430  Vec<Short_t> nMCMvdPixelAlone(In_Put.nMCMvdPixelAlone,In_Put.nTotalCandidates,"nMCMvdPixelAlone") ;
431  Vec<Short_t> nMCMvdStripAlone(In_Put.nMCMvdStripAlone,In_Put.nTotalCandidates,"nMCMvdStripAlone") ;
432 
433  Vec<Short_t> nMCParalAlone(In_Put.nMCParalAlone,In_Put.MAXTRACKSPEREVENT,"nMCParalAlone") ;
434  Vec<Short_t> nMCSkewAlone(In_Put.nMCSkewAlone,In_Put.MAXTRACKSPEREVENT,"nMCSkewAlone") ;
435 
436  Short_t nMCTracks = In_Put.nMCTracks;
437 
438  Vec<Short_t> nMvdPixelCommon(In_Put.nMvdPixelCommon,In_Put.nTotalCandidates,"nMvdPixelCommon") ;
439  Short_t nMvdPixelHit = In_Put.nMvdPixelHit;
440  Vec<Short_t> nMvdPixelHitsinTrack(In_Put.nMvdPixelHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdPixelHitsinTrack") ;
441  Vec<Short_t> nMvdPixelSpuriinTrack(In_Put.nMvdPixelSpuriinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdPixelSpuriinTrack") ;
442 
443  Vec<Short_t> nMvdStripCommon(In_Put.nMvdStripCommon,In_Put.nTotalCandidates,"nMvdStripCommon") ;
444  Short_t nMvdStripHit = In_Put.nMvdStripHit;
445  Vec<Short_t> nMvdStripHitsinTrack(In_Put.nMvdStripHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdStripHitsinTrack") ;
446  Vec<Short_t> nMvdStripSpuriinTrack(In_Put.nMvdStripSpuriinTrack,In_Put.nTotalCandidates,"nMvdStripSpuriinTrack") ;
447 
448 
449  Vec<Short_t> nParalCommon(In_Put.nParalCommon,In_Put.MAXTRACKSPEREVENT,"nParalCommon") ;
450 
451  Short_t nSciTilHits = In_Put.nSciTilHits;
452 
453  Vec<Short_t> nSciTilHitsinTrack(In_Put.nSciTilHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSciTilHitsinTrack") ;
454 
455  Vec<Short_t> nSkewCommon(In_Put.nSkewCommon,In_Put.MAXTRACKSPEREVENT,"nSkewCommon") ;
456 
457  Vec<Short_t> nSpuriParinTrack(In_Put.nSpuriParinTrack,In_Put.MAXTRACKSPEREVENT,"nSpuriParinTrack") ;
458 
459  Int_t nSttHit = In_Put.nSttHit;
460  Int_t nSttParHit = In_Put.nSttParHit;
461  Vec<Short_t> nSttParHitsinTrack(In_Put.nSttParHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSttParHitsinTrack") ;
462  Int_t nSttSkewHit = In_Put.nSttSkewHit;
463  Vec<Short_t> nSttSkewHitsinTrack(In_Put.nSttSkewHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSttSkewHitsinTrack") ;
464 
465  Short_t nTotalCandidates = In_Put.nTotalCandidates;
466  Vec<Short_t> nTrackCandHit(In_Put.nTrackCandHit,In_Put.MAXTRACKSPEREVENT,"nTrackCandHit") ;
467 
468  Vec<Double_t> Ox(In_Put.Ox,In_Put.MAXTRACKSPEREVENT,"Ox") ;
469  Vec<Double_t> Oy(In_Put.Oy,In_Put.MAXTRACKSPEREVENT,"Oy") ;
470 
471  Vec<Short_t> ParalCommonList(In_Put.ParalCommonList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ParalCommonList") ;
472 
473 
474  Vec<Short_t> ParSpuriList(In_Put.ParSpuriList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ParSpuriList") ;
475 
476 
477  Vec<Double_t> posizSciTil(In_Put.posizSciTil,In_Put.MAXSCITILHITS*3,"posizSciTil") ;
478 
479 
480  Vec<Double_t> R(In_Put.R,In_Put.MAXTRACKSPEREVENT,"R") ;
481 
483  Double_t RSTRAWDETECTORMIN = In_Put.rstrawdetectormin;
484 
485  Vec<Double_t> sigmaXMvdPixel(In_Put.sigmaXMvdPixel,In_Put.MAXMVDPIXELHITS,"sigmaXMvdPixel") ;
486  Vec<Double_t> sigmaXMvdStrip(In_Put.sigmaXMvdStrip,In_Put.MAXMVDSTRIPHITS,"sigmaXMvdStrip") ;
487  Vec<Double_t> sigmaYMvdPixel(In_Put.sigmaYMvdPixel,In_Put.MAXMVDPIXELHITS,"sigmaYMvdPixel") ;
488  Vec<Double_t> sigmaYMvdStrip(In_Put.sigmaYMvdStrip,In_Put.MAXMVDSTRIPHITS,"sigmaYMvdStrip") ;
489 
490  Vec<Double_t> SchosenSkew(In_Put.SchosenSkew,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITS,"SchosenSkew") ;
491 
492  Vec<Short_t> SkewCommonList(In_Put.SkewCommonList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"SkewCommonList") ;
493 
494 
496  Vec<Double_t> XMvdPixel(In_Put.XMvdPixel,In_Put.MAXMVDPIXELHITS,"XMvdPixel") ;
497  Vec<Double_t> XMvdStrip(In_Put.XMvdStrip,In_Put.MAXMVDSTRIPHITS,"XMvdStrip") ;
498  Vec<Double_t> YMvdPixel(In_Put.YMvdPixel,In_Put.MAXMVDPIXELHITS,"YMvdPixel") ;
499  Vec<Double_t> YMvdStrip(In_Put.YMvdStrip,In_Put.MAXMVDSTRIPHITS,"YMvdStrip") ;
500  Vec<Double_t> WDX(In_Put.WDX,In_Put.MAXSTTHITS,"WDX") ;
501  Vec<Double_t> WDY(In_Put.WDY,In_Put.MAXSTTHITS,"WDY") ;
502  Vec<Double_t> WDZ(In_Put.WDZ,In_Put.MAXSTTHITS,"WDZ") ;
503  Vec<Double_t> ZMvdPixel(In_Put.ZMvdPixel,In_Put.MAXMVDPIXELHITS,"ZMvdPixel") ;
504  Vec<Double_t> ZMvdStrip(In_Put.ZMvdStrip,In_Put.MAXMVDSTRIPHITS,"ZMvdStrip") ;
505 
506 //----------------------------
507 
508 // marker2 per cambioperl;
509  Double_t ultimoang[nTotalCandidates];
510  Double_t primoang[nTotalCandidates];
511  Double_t Posiz1[3];
512  Double_t XintersectionList[2];
513  Double_t YintersectionList[2];
514 
515  Vec<Double_t> ultimoangolo(ultimoang,nTotalCandidates,"ultimoangolo");
516  Vec<Double_t> primoangolo(primoang,nTotalCandidates,"primoangolo");
517 
518 
519 
520 // marker2 per cambioperl;
521 
522 // calcolo di S degli eventuali hits SciTil presenti nelle tracce trovate.
523 
524  PndTrkCTGeometryCalculations GeometryCalculator;
525 
526  for( i= 0, k=-1; i< nTotalCandidates; i++){
527  Double_t esseSciTil[nSciTilHitsinTrack.at(i)];
528  if(!keepit.at(i)) continue;
529  for(j=0;j< nSciTilHitsinTrack.at(i);j++){
530 
531  intersect=GeometryCalculator.IntersectionSciTil_Circle(
532 // DIMENSIONSCITIL,
533  posizSciTil.at(ListSciTilHitsinTrack.at(i*MAXSCITILHITSINTRACK+j)*3+0),
534  posizSciTil.at(ListSciTilHitsinTrack.at(i*MAXSCITILHITSINTRACK+j)*3+1),
535  Ox.at(i), // center of circle.
536  Oy.at(i),
537  R.at(i), // Radius of circle.
538  &Nint,
539  XintersectionList,
540  YintersectionList
541  );
542 
543 // reject case with no intersection of the SciTil with the circle trajectory.
544  if(intersect){
545  // calculate S on the lateral face of the Helix.
546  if ( Nint==1){ // the majority of the cases
547  esseSciTil[j] = atan2(YintersectionList[0]-Oy.at(i),
548  XintersectionList[0]-Ox.at(i));
549  } else { // in this case Nint=2 (it should be a very rare case).
550  // do an average of the two positions.
551  esseSciTil[j] = atan2( 0.5*(YintersectionList[0]+YintersectionList[1])
552  -Oy.at(i),0.5*(XintersectionList[0]+XintersectionList[1])-Ox.at(i));
553  } // end of if ( Nint==1)
554  if ( esseSciTil[j]<0.) esseSciTil[j] += 2.*PI;
555 
556  } // continuation of if(intersect)
557 
558  } // end of for(j....
559 
560 
561 
562 // } // end of for( i= 0; i< nTotalCandidates; i++)
563 //-----------------
564 
565 // calcolo di S degli eventuali hits SciTil 'Alone' delle tracce trovate.
566 
567 // Double_t esseSciTilAlone[MAXTRACKSPEREVENT][MAXSCITILHITS];
568 
569 // for( i= 0, k=-1; i< nTotalCandidates; i++){
570  Double_t esseSciTilAlone[ In_Put.nMCSciTilAlone[i] ];
571  if(!keepit.at(i)) continue;
572 
573 
574  for(j=0;j< In_Put.nMCSciTilAlone[i];j++){
575  intersect=GeometryCalculator.IntersectionSciTil_Circle(
576 // DIMENSIONSCITIL,
577  posizSciTil.at(In_Put.MCSciTilAloneList[i*nSciTilHits+j]*3+0),
578  posizSciTil.at(In_Put.MCSciTilAloneList[i*nSciTilHits+j]*3+1),
579  Ox.at(i), // center of circle.
580  Oy.at(i),
581  R.at(i), // Radius of circle.
582  &Nint,
583  XintersectionList,
584  YintersectionList
585  );
586  // calculate S on the lateral face of the Helix.
587  esseSciTilAlone[j] =
588  atan2(posizSciTil.at(In_Put.MCSciTilAloneList[i*nSciTilHits+j]*3+1)-Oy.at(i),
589  posizSciTil.at(In_Put.MCSciTilAloneList[i*nSciTilHits+j]*3+0)-Ox.at(i));
590  if ( esseSciTilAlone[j]<0.) esseSciTilAlone[j] += 2.*PI;
591 
592  } // end of for(j....
593 
594 
595 // } // end of for( i= 0; i< nTotalCandidates; i++)
596 // for( i= 0, k=-1; i< nTotalCandidates; i++){
597 // if(!keepit.at(i)) continue;
598 
599  k++;
600  int npunti=-1+nSttParHitsinTrack.at(i)+nSttSkewHitsinTrack.at(i)+
601  nMvdPixelHitsinTrack.at(i)+nMvdStripHitsinTrack.at(i)+nSciTilHitsinTrack.at(i);
602 
603  if (ListTrackCandHitType.at(i*dime+npunti) == 0){ // Mvd Pixel
604  ultimoangolo[i] = atan2( YMvdPixel.at( ListTrackCandHit.at(i*dime+npunti) )-Oy.at(i),
605  XMvdPixel.at( ListTrackCandHit.at(i*dime+npunti) )-Ox.at(i));
606  } else if (ListTrackCandHitType.at(i*dime+npunti) == 1){ // Mvd Strip
607  ultimoangolo[i] = atan2( YMvdStrip.at( ListTrackCandHit.at(i*dime+npunti) )-Oy.at(i),
608  XMvdStrip.at( ListTrackCandHit.at(i*dime+npunti) )-Ox.at(i));
609  } else if( ListTrackCandHitType.at(i*dime+npunti) == 2 ){ // it is a parallel straw hit
610 
611 
612 //inizio cambio_in_perl ;
614  &info,
615  ListTrackCandHit.at(i*dime+npunti),
616  Ox.at(i),
617  Oy.at(i),
618  R.at(i),
619  KAPPA.at(i),
620  FI0.at(i),
621  Charge.at(i),
622  Posiz1
623  );
624 
625 //fine cambio_in_perl ;
626 
627 
628  ultimoangolo[i] = atan2( Posiz1[1]-Oy.at(i),Posiz1[0]-Ox.at(i));
629  } else if ( ListTrackCandHitType.at(i*dime+npunti) == 3 ){ // it is a skew straw hit
630 
631  ultimoangolo[i] =
632  SchosenSkew.at(i*MAXSTTHITS +ListTrackCandHit.at(i*dime+npunti) );
633  } else if ( ListTrackCandHitType.at(i*dime+npunti) == 1001){ // SciTil hit.
634  ultimoangolo[i] =
635  atan2(posizSciTil.at(ListTrackCandHit.at(i*dime+npunti)*3+1)-Oy.at(i),
636  posizSciTil.at(ListTrackCandHit.at(i*dime+npunti)*3+0)-Ox.at(i));
637  }
638  if( ultimoangolo[i]<0.) ultimoangolo[i]+= 2.*PI;
639 
640 
641 
642  double primo;
643  primoangolo[i] = fmod(FI0.at(i),2.*PI);
644  if(Charge.at(i)>0.){
645  if( ultimoangolo[i]> primoangolo[i]) ultimoangolo[i]-=2.*PI;
646  primo=ultimoangolo[i]*180./PI;
647  ultimoangolo[i]=primoangolo[i]*180./PI;
648  primoangolo[i]=primo;
649 
650  }else{
651  if( ultimoangolo[i]<primoangolo[i]) ultimoangolo[i]+=2.*PI;
652  ultimoangolo[i]=ultimoangolo[i]*180./PI;
653  primoangolo[i]=primoangolo[i]*180./PI;
654  }
655 
656 
657  if( nSttParHitsinTrack.at(i)+nMvdPixelHitsinTrack.at(i)+
658  nMvdStripHitsinTrack.at(i)>0 && doMcComparison) {
659 
660  for( j=0;j<nMCSkewAlone.at(i);j++){
661  puntator = (FairMCPoint*) fSttPointArray->At(MCSkewAloneList.at(i*nSttHit+j));
662  MCSkewAloneX.at( MCSkewAloneList.at(i*nSttHit+j) )=puntator->GetX();
663  MCSkewAloneY.at( MCSkewAloneList.at(i*nSttHit+j) )=puntator->GetY();
664  }
665 
666 // inizio cambio_in_perl ;
667 
669  In_Put,
670  Ox.at(i),
671  Oy.at(i),
672  R.at(i),
673  primoangolo[i],
674  ultimoangolo[i],
675  nSttParHitsinTrack.at(i),
676  i,
677  k, // questo si usa solo per il nome della Macro.
678  daTrackFoundaTrackMC.at(i),
679  nMvdPixelHitsinTrack.at(i),
680  nMvdStripHitsinTrack.at(i),
681  nSttSkewHitsinTrack.at(i)
682  );
683 // fine cambio_in_perl ;
684 
685  } // end of if( nSttParHitsinTrack.at(i)+nMvdPixelHitsinTrack.at(i)+
686  // nMvdStripHitsinTrack.at(i)>0 && doMcComparison)
687 
688  if( nSttSkewHitsinTrack.at(i)+nMvdPixelHitsinTrack.at(i)+
689  nMvdStripHitsinTrack.at(i)>0 && doMcComparison){
691  esseSciTil,
692  esseSciTilAlone,
693  In_Put,
694  k, // questo si usa solo per il nome della Macro.
695  i
696  );
697  } // end of if( nSttSkewHitsinTrack.at(i)+nMvdPixelHitsinTrack.at(i)+
698  // nMvdStripHitsinTrack.at(i)>0 && doMcComparison)
699  } // end of for( i= 0; i< nSttTrackCand; i++)
700 
701 
702 // inizio cambio_in_perl ;
704  APOTEMAMAXINNERPARSTRAW,
705  APOTEMAMAXSKEWSTRAW,
706  APOTEMAMINOUTERPARSTRAW,
707  APOTEMAMINSKEWSTRAW,
708  BFIELD,
709  CVEL,
710  DIMENSIONSCITIL,
711  doMcComparison,
712  fMCTrackArray,
713  nSttHit,
714  &info,
715  In_Put,
716  IVOLTE,
717  nMCTracks,
718  nMvdPixelHit,
719  nMvdStripHit,
720  nSciTilHits,
721  nTotalCandidates,
722  &keepit,
723  &FI0,
724  &Ox,
725  &Oy,
726  &posizSciTil,
727  &primoangolo,
728  &R,
729  RSTRAWDETECTORMAX,
730  RSTRAWDETECTORMIN,
731  &sigmaXMvdPixel,
732  &sigmaXMvdStrip,
733  &sigmaYMvdPixel,
734  &sigmaYMvdStrip,
735  &ultimoangolo,
736  VERTICALGAP,
737  &XMvdPixel,
738  &XMvdStrip,
739  &YMvdPixel,
740  &YMvdStrip
741  );
742 
743  // Macro nel piano conforme, senza gli hits Mvd;
744 
746  APOTEMAMAXINNERPARSTRAW,
747  APOTEMAMAXSKEWSTRAW,
748  APOTEMAMINOUTERPARSTRAW,
749  APOTEMAMINSKEWSTRAW,
750  BFIELD,
751  CVEL,
752  DIMENSIONSCITIL,
753  doMcComparison,
754  fMCTrackArray,
755  nSttHit,
756  &info,
757  In_Put,
758  IVOLTE,
759  nMCTracks,
760  nMvdPixelHit,
761  nMvdStripHit,
762  nSciTilHits,
763  nTotalCandidates,
764  &keepit,
765  &FI0,
766  &Ox,
767  &Oy,
768  &posizSciTil,
769  &primoangolo,
770  &R,
771  RSTRAWDETECTORMAX,
772  RSTRAWDETECTORMIN,
773  &sigmaXMvdPixel,
774  &sigmaXMvdStrip,
775  &sigmaYMvdPixel,
776  &sigmaYMvdStrip,
777  &ultimoangolo,
778  VERTICALGAP,
779  &XMvdPixel,
780  &XMvdStrip,
781  &YMvdPixel,
782  &YMvdStrip
783  );
784 
785 
786  // Macro nel piano conforme, con anche gli hits Mvd;
787 
789  APOTEMAMAXINNERPARSTRAW,
790  APOTEMAMAXSKEWSTRAW,
791  APOTEMAMINOUTERPARSTRAW,
792  APOTEMAMINSKEWSTRAW,
793  BFIELD,
794  CVEL,
795  DIMENSIONSCITIL,
796  doMcComparison,
797  fMCTrackArray,
798  nSttHit,
799  &info,
800  In_Put,
801  IVOLTE,
802  nMCTracks,
803  nMvdPixelHit,
804  nMvdStripHit,
805  nSciTilHits,
806  nTotalCandidates,
807  &keepit,
808  &FI0,
809  &Ox,
810  &Oy,
811  &posizSciTil,
812  &primoangolo,
813  &R,
814  RSTRAWDETECTORMAX,
815  RSTRAWDETECTORMIN,
816  &sigmaXMvdPixel,
817  &sigmaXMvdStrip,
818  &sigmaYMvdPixel,
819  &sigmaYMvdStrip,
820  &ultimoangolo,
821  VERTICALGAP,
822  &XMvdPixel,
823  &XMvdStrip,
824  &YMvdPixel,
825  &YMvdStrip
826  );
827 
828 
829 // la seguente e' da modificare per includere eventuali hits SciTil mai usati.
831  APOTEMAMAXINNERPARSTRAW,
832  APOTEMAMAXSKEWSTRAW,
833  APOTEMAMINOUTERPARSTRAW,
834  APOTEMAMINSKEWSTRAW,
835  &InclusionListSciTil,
836  &InclusionListStt,
837  &info,
838  IVOLTE,
839  &keepit,
840  &ListTrackCandHit,
841  &ListTrackCandHitType,
842  MAXMVDPIXELHITS,
843  MAXMVDPIXELHITSINTRACK,
844  MAXMVDSTRIPHITS,
845  MAXMVDSTRIPHITSINTRACK,
846  MAXSCITILHITSINTRACK,
847  MAXSTTHITS,
848  MAXSTTHITSINTRACK,
849  MAXTRACKSPEREVENT,
850  nMvdPixelHit,
851  nMvdStripHit,
852  nSciTilHits,
853  nSttHit,
854  nSttParHit,
855  nSttSkewHit,
856  nTotalCandidates,
857  &nTrackCandHit,
858  &posizSciTil,
859  RSTRAWDETECTORMAX,
860  RSTRAWDETECTORMIN,
861  VERTICALGAP,
862  &XMvdPixel,
863  &XMvdStrip,
864  &YMvdPixel,
865  &YMvdStrip
866  );
867 
868 // fine cambio_in_perl ;
869 
870 
871 //--------------------- fine plottamenti --------------------------------------------
872 
873 
874  return;
875 }
const Double_t RSTRAWDETECTORMAX
Int_t i
Definition: run_full.C:25
void WriteMacroParallelHitsGeneral(Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
void WriteMacroAllHitsRestanti(Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Vec< bool > *InclusionListSciTil, Vec< bool > *InclusionListStt, Vec< Double_t > *info, int IVOLTE, Vec< bool > *keepit, Vec< Short_t > *ListTrackCandHit, Vec< Short_t > *ListTrackCandHitType, int MAXMVDPIXELHITS, int MAXMVDPIXELHITSINTRACK, int MAXMVDSTRIPHITS, int MAXMVDSTRIPHITSINTRACK, int MAXSCITILHITSINTRACK, int MAXSTTHITS, int MAXSTTHITSINTRACK, int MAXTRACKSPEREVENT, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHit, Short_t nSttHit, Short_t nSttParHit, Short_t nSttSkewHit, Short_t nSttTrackCand, Vec< Short_t > *nTrackCandHit, Vec< Double_t > *posizSciTil, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
void WriteMacroSttParallelAssociatedHitsandMvdwithMC(PndTrkPlotMacros_InputData In_Put, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t primoangolo, Double_t ultimoangolo, Short_t Nhits, int iTrack, int iNome, Short_t daSttTrackaMCTrack, Short_t nMvdPixelHitsAssociatedToSttTra, Short_t nMvdStripHitsAssociatedToSttTra, Short_t nSkewHitsinTrack)
void WriteMacroParallelHitsGeneralConformalwithMC(Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
const Double_t APOTEMAMINSKEWSTRAW
void WriteMacroSkewAssociatedHitswithMC(Double_t *ESSE, Double_t *ESSEalone, PndTrkPlotMacros_InputData In_Put, int iNome, int iTrack)
const Double_t BFIELD
void SttInfoXYZParal(Vec< Double_t > *info, Short_t infopar, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t KAPPA, Double_t FI0, Short_t Charge, Double_t *Posiz)
const Double_t PI
Double_t
const Double_t APOTEMAMINOUTERPARSTRAW
const Double_t VERTICALGAP
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
const Double_t APOTEMAMAXINNERPARSTRAW
const int MAXSTTHITSINTRACK
const Double_t CVEL
bool IntersectionSciTil_Circle(Double_t posizSciTilx, Double_t posizSciTily, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2])
const Double_t APOTEMAMAXSKEWSTRAW
Double_t R
Definition: checkhelixhit.C:61
int Nint(float x)
Definition: PndCAMath.h:117
void WriteMacroParallel_MvdHitsGeneralConformalwithMC(Double_t APOTEMAMAXINNERPARSTRAW, Double_t APOTEMAMAXSKEWSTRAW, Double_t APOTEMAMINOUTERPARSTRAW, Double_t APOTEMAMINSKEWSTRAW, Double_t BFIELD, Double_t CVEL, Double_t DIMENSIONSCITIL, bool doMcComparison, TClonesArray *fMCTrackArray, Int_t Nhits, Vec< Double_t > *info, PndTrkPlotMacros_InputData In_Put, int IVOLTE, Short_t nMCTracks, Short_t nMvdPixelHit, Short_t nMvdStripHit, Short_t nSciTilHits, Short_t nTracksFoundSoFar, Vec< bool > *keepit, Vec< Double_t > *FI0, Vec< Double_t > *Ox, Vec< Double_t > *Oy, Vec< Double_t > *posizSciTil, Vec< Double_t > *primoangolo, Vec< Double_t > *R, Double_t RSTRAWDETECTORMAX, Double_t RSTRAWDETECTORMIN, Vec< Double_t > *sigmaXMvdPixel, Vec< Double_t > *sigmaXMvdStrip, Vec< Double_t > *sigmaYMvdPixel, Vec< Double_t > *sigmaYMvdStrip, Vec< Double_t > *ultimoangolo, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
const Double_t DIMENSIONSCITIL
void PndTrkPlotMacros::WriteMacroAllHitsRestanti ( Double_t  APOTEMAMAXINNERPARSTRAW,
Double_t  APOTEMAMAXSKEWSTRAW,
Double_t  APOTEMAMINOUTERPARSTRAW,
Double_t  APOTEMAMINSKEWSTRAW,
Vec< bool > *  InclusionListSciTil,
Vec< bool > *  InclusionListStt,
Vec< Double_t > *  info,
int  IVOLTE,
Vec< bool > *  keepit,
Vec< Short_t > *  ListTrackCandHit,
Vec< Short_t > *  ListTrackCandHitType,
int  MAXMVDPIXELHITS,
int  MAXMVDPIXELHITSINTRACK,
int  MAXMVDSTRIPHITS,
int  MAXMVDSTRIPHITSINTRACK,
int  MAXSCITILHITSINTRACK,
int  MAXSTTHITS,
int  MAXSTTHITSINTRACK,
int  MAXTRACKSPEREVENT,
Short_t  nMvdPixelHit,
Short_t  nMvdStripHit,
Short_t  nSciTilHit,
Short_t  nSttHit,
Short_t  nSttParHit,
Short_t  nSttSkewHit,
Short_t  nSttTrackCand,
Vec< Short_t > *  nTrackCandHit,
Vec< Double_t > *  posizSciTil,
Double_t  RSTRAWDETECTORMAX,
Double_t  RSTRAWDETECTORMIN,
Double_t  VERTICALGAP,
Vec< Double_t > *  XMvdPixel,
Vec< Double_t > *  XMvdStrip,
Vec< Double_t > *  YMvdPixel,
Vec< Double_t > *  YMvdStrip 
)

Definition at line 887 of file PndTrkPlotMacros.cxx.

References Vec< T >::at(), Double_t, i, RSTRAWDETECTORMAX, xmax, and xmin.

925  {
926 
927 // fine cambio_in_perl ;
928 
929 // nSttHit = parallel+skew.
930 
931  bool exclusionStt[MAXSTTHITS],
932  exclusionPixel[MAXMVDPIXELHITS],
933  exclusionStrip[MAXMVDSTRIPHITS];
934 
935  char nome[300],
936  nome2[300];
937 
938  int i,j;//,k; //[R.K. 01/2017] unused variable?
939 
940 
941  Double_t //delta, //[R.K. 01/2017] unused variable?
942  //deltax, //[R.K. 01/2017] unused variable?
943  //deltay, //[R.K. 01/2017] unused variable?
944  xmin,
945  xmax,
946  ymin,
947  ymax;
948 
949  // trasformazioni in variabili locali;
950  int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
951  MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
952 
953 
954 
955  for(i=0;i<nSttHit;i++){
956  exclusionStt[i]=false;
957  }
958  for(i=0;i<nMvdPixelHit;i++){
959  exclusionPixel[i]=false;
960  }
961  for(i=0;i<nMvdStripHit;i++){
962  exclusionStrip[i]=false;
963  }
964 
965 
966 
967  for(i=0;i<nSttTrackCand;i++){
968  if(!keepit->at(i)) continue;
969 
970  for(j=0;j<nTrackCandHit->at(i);j++){
971 
972  switch (ListTrackCandHitType->at(i*dime+j)){
973  case 0:
974  exclusionPixel[ ListTrackCandHit->at(i*dime+j) ] = true;
975  break;
976  case 1:
977  exclusionStrip[ ListTrackCandHit->at(i*dime+j) ] = true;
978  break;
979  default:
980  exclusionStt[ ListTrackCandHit->at(i*dime+j) ] = true;
981  break;
982  }
983  } // end of for(j=0;j<nTrackCandHit->at(i);j++)
984  } // end of for(i=0;i<nSttTrackCand;i++)
985 
986 
987 
988 
989 
990  xmin=-1.3*RSTRAWDETECTORMAX;
991  xmax=1.3*RSTRAWDETECTORMAX;
992  ymin=-1.3*RSTRAWDETECTORMAX;
993  ymax=1.3*RSTRAWDETECTORMAX;
994 
995  sprintf(nome,"MacroSttMvdHitsRestantiEvent%d", IVOLTE);
996  sprintf(nome2,"%s.C",nome);
997  FILE * MACRO = fopen(nome2,"w");
998  fprintf(MACRO,"void %s()\n{\n",nome);
999  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1000 
1001 
1002  disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1003 
1004 // disegna il BiHexagon destro e sinistro delle inner parallel straws.
1005  char myname[100];
1006 
1007  sprintf(myname,"InnerPar");
1009  VERTICALGAP,
1010  MACRO,
1011  RSTRAWDETECTORMIN,
1013  4, // color code, 4= blue.
1014  myname
1015  );
1016 //--------------
1017 // disegna il BiHexagon destro e sinistro delle skew straws.
1018  sprintf(myname,"Skew");
1020  VERTICALGAP,
1021  MACRO,
1024  2, // color code.
1025  myname
1026  );
1027 //--------------
1028 // disegna il BiHexagon destro e sinistro delle skew straws.
1029  sprintf(myname,"OuterPar");
1031  VERTICALGAP,
1032  MACRO,
1035  4, // color code.
1036  myname
1037  );
1038 //--------------
1039 
1040  for( i=0; i< nSttHit; i++) {
1041  if( (!exclusionStt[i]) && InclusionListStt->at(i) ) { // all straws
1042  if( info->at(i*7+5) == 1 ) { // parallel straws
1043  fprintf(MACRO,"TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
1044  i,info->at(i*7+0),info->at(i*7+1),info->at(i*7+3),info->at(i*7+3),i,i);
1045  } else { // skew straws.
1046  fprintf(MACRO,"TMarker* SS%d = new TMarker(%f,%f,%d);\nSS%d->SetMarkerColor(1);\nSS%d->Draw();\n",
1047  i,info->at(i*7+0),info->at(i*7+1),28,i,i);
1048  }
1049  }
1050  }
1051  for( i=0; i< nMvdPixelHit; i++) {
1052  if( !exclusionPixel[i]) { // all Pixels
1053  fprintf(MACRO,
1054 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1055  i,XMvdPixel->at(i),YMvdPixel->at(i),26,i,i);
1056  }
1057  }
1058  for( i=0; i< nMvdStripHit; i++) {
1059  if( !exclusionStrip[i]) { // all Pixels
1060  fprintf(MACRO,
1061 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1062  i,XMvdStrip->at(i),YMvdStrip->at(i),25,i,i);
1063  }
1064  }
1065 
1066  for( i=0; i< nSciTilHits; i++) {
1067  if( InclusionListSciTil->at(i)) { // all SciTil hit never used.
1068  fprintf(MACRO,
1069 "TMarker* SciT%d = new TMarker(%f,%f,%d);\nSciT%d->SetMarkerColor(1);\nSciT%d->Draw();\n",
1070  i,posizSciTil->at(i*3+0),posizSciTil->at(i*3+1),30,i,i);
1071  }
1072  }
1073  fprintf(MACRO,"}\n");
1074  fclose(MACRO);
1075 
1076 
1077 
1078  return;
1079  }
const Double_t RSTRAWDETECTORMAX
Int_t i
Definition: run_full.C:25
Double_t xmax
const Double_t APOTEMAMINSKEWSTRAW
void DrawBiHexagonInMacro(Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
Double_t
const Double_t APOTEMAMINOUTERPARSTRAW
const Double_t VERTICALGAP
const Double_t APOTEMAMAXINNERPARSTRAW
const int MAXSTTHITSINTRACK
Double_t xmin
const Double_t APOTEMAMAXSKEWSTRAW
T & at(int index)
Definition: PndTrkVectors.h:54
void DrawHexagonCircleInMacro(Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
void disegnaAssiXY(FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
void PndTrkPlotMacros::WriteMacroParallel_MvdHitsGeneralConformalwithMC ( Double_t  APOTEMAMAXINNERPARSTRAW,
Double_t  APOTEMAMAXSKEWSTRAW,
Double_t  APOTEMAMINOUTERPARSTRAW,
Double_t  APOTEMAMINSKEWSTRAW,
Double_t  BFIELD,
Double_t  CVEL,
Double_t  DIMENSIONSCITIL,
bool  doMcComparison,
TClonesArray *  fMCTrackArray,
Int_t  Nhits,
Vec< Double_t > *  info,
PndTrkPlotMacros_InputData  In_Put,
int  IVOLTE,
Short_t  nMCTracks,
Short_t  nMvdPixelHit,
Short_t  nMvdStripHit,
Short_t  nSciTilHits,
Short_t  nTracksFoundSoFar,
Vec< bool > *  keepit,
Vec< Double_t > *  FI0,
Vec< Double_t > *  Ox,
Vec< Double_t > *  Oy,
Vec< Double_t > *  posizSciTil,
Vec< Double_t > *  primoangolo,
Vec< Double_t > *  R,
Double_t  RSTRAWDETECTORMAX,
Double_t  RSTRAWDETECTORMIN,
Vec< Double_t > *  sigmaXMvdPixel,
Vec< Double_t > *  sigmaXMvdStrip,
Vec< Double_t > *  sigmaYMvdPixel,
Vec< Double_t > *  sigmaYMvdStrip,
Vec< Double_t > *  ultimoangolo,
Double_t  VERTICALGAP,
Vec< Double_t > *  XMvdPixel,
Vec< Double_t > *  XMvdStrip,
Vec< Double_t > *  YMvdPixel,
Vec< Double_t > *  YMvdStrip 
)

Definition at line 1923 of file PndTrkPlotMacros.cxx.

References Vec< T >::at(), cos(), CVEL, PndTrkPlotMacros_InputData::dimensionscitil, Double_t, fabs(), PndTrkPlotMacros_InputData::fMCTrackArray, fParticle, PndMCTrack::GetMomentum(), PndMCTrack::GetPdgCode(), PndMCTrack::GetStartVertex(), i, PndTrkPlotMacros_InputData::InclusionListStt, PndTrkPlotMacros_InputData::NFIDIVCONFORMAL, PndTrkPlotMacros_InputData::NRDIVCONFORMAL, PI, PndTrkPlotMacros_InputData::radiaConf, RSTRAWDETECTORMAX, sin(), sqrt(), xmax, and xmin.

1963 {
1964 // fine cambio_in_perl ;
1965 
1966  Int_t i;//, j, i1, ii, index, Kincl, nlow, nup, STATUS; //[R.K. 01/2017] unused variable?
1967 
1968  Double_t xmin , xmax, ymin, ymax, xl, xu, yl, yu,
1969  gamma,
1970  //dx, dy, diff, d1, d2, //[R.K. 01/2017] unused variable?
1971  delta, deltax, deltay, //deltaz, deltaS, //[R.K. 01/2017] unused variable?
1972  ff,//factor, //[R.K. 01/2017] unused variable?
1973  //zmin, zmax, Smin, Smax, S1, S2, //[R.K. 01/2017] unused variable?
1974  y1, y2,x1,x2,//z1, z2, //[R.K. 01/2017] unused variable?
1975  //vx1, vy1, vz1, C0x1, C0y1, C0z1, //[R.K. 01/2017] unused variable?
1976  aaa, bbb, rrr; //ccc, angle, minor, major, //[R.K. 01/2017] unused variable?
1977  //distance, Rx, Ry, LL, //[R.K. 01/2017] unused variable?
1978  //Aellipsis1, Bellipsis1,fi1, //[R.K. 01/2017] unused variable?
1979  //fmin, fmax, offset, step, //[R.K. 01/2017] unused variable?
1980  //SkewInclWithRespectToS, zpos, zpos1, zpos2, //[R.K. 01/2017] unused variable?
1981  //Tiltdirection1[2], //[R.K. 01/2017] unused variable?
1982  //zl[200],zu[200], //[R.K. 01/2017] unused variable?
1983  //POINTS1[6]; //[R.K. 01/2017] unused variable?
1984 
1985  char nome[300], nome2[300];
1986 
1987  const double PI = 3.141592654;
1988 
1989  Double_t USciT[nSciTilHits];
1990  Vec <Double_t> USciTil(USciT,nSciTilHits,"USciTil");
1991 
1992  Double_t VSciT[nSciTilHits];
1993  Vec <Double_t> VSciTil(VSciT,nSciTilHits,"VSciTil");
1994 
1995  Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
1996  Vec <Double_t> Ox(oX,Nhits,"Ox");
1997  Vec <Double_t> Oy(oY,Nhits,"Oy");
1998  Vec <Double_t> Radius(Radi,Nhits,"Radius");
1999 
2000 
2001  Double_t UPixel[nMvdPixelHit],
2002  VPixel[nMvdPixelHit],
2003  PRadius[nMvdPixelHit],
2004  UStrip[nMvdStripHit],
2005  VStrip[nMvdStripHit],
2006  SRadius[nMvdStripHit];
2007  Vec <Double_t> PixelU(UPixel,nMvdPixelHit,"PixelU");
2008  Vec <Double_t> PixelV(VPixel,nMvdPixelHit,"PixelV");
2009  Vec <Double_t> RadiusP(PRadius,nMvdPixelHit,"RadiusP");
2010  Vec <Double_t> StripU(UStrip,nMvdStripHit,"StripU");
2011  Vec <Double_t> StripV(VStrip,nMvdStripHit,"StripV");
2012  Vec <Double_t> RadiusS(SRadius,nMvdStripHit,"RadiusS");
2013 
2014 
2015 
2016 
2017  Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
2018  GAMM[nTracksFoundSoFar];
2019  Vec <Double_t> ALFA(ALF,nTracksFoundSoFar,"ALFA");
2020  Vec <Double_t> BETA(BET,nTracksFoundSoFar,"BETA");
2021  Vec <Double_t> GAMMA(GAMM,nTracksFoundSoFar,"GAMMA");
2022 
2023 //---------- parallel straws Macro now con anche le tracce MC
2024 
2025 
2026  sprintf(nome,"MacroSttMvdAllHitsConformalwithMCEvent%d", IVOLTE);
2027  sprintf(nome2,"%s.C",nome);
2028  FILE * MACRO = fopen(nome2,"w");
2029  fprintf(MACRO,"void %s()\n{\n",nome);
2030 
2031  xmin=1.e20;
2032  xmax=-1.e20;
2033  ymin=1.e20;
2034  ymax=-1.e20;
2035 
2036 
2037 
2038 //--- SciTil info
2039  for( i=0; i< nSciTilHits; i++) {
2040  Double_t erre = posizSciTil->at(i*3+0)*posizSciTil->at(i*3+0)+
2041  posizSciTil->at(i*3+1)*posizSciTil->at(i*3+1);
2042  USciTil[i] = posizSciTil->at(i*3+0)/erre;
2043  VSciTil[i] = posizSciTil->at(i*3+1)/erre;
2044  if (USciTil[i] < xmin) xmin = USciTil[i];
2045  if (USciTil[i] > xmax) xmax = USciTil[i];
2046  if (VSciTil[i] < ymin) ymin = VSciTil[i];
2047  if (VSciTil[i] > ymax) ymax = VSciTil[i];
2048  }
2049 //------
2050 
2051 
2052  for( i=0; i< Nhits; i++) {
2053  if(!In_Put.InclusionListStt[i]) continue;
2054  if( info->at(i*7+5) == 1 ) { // parallel straws
2055 // centro sfera in sistema conforme
2056  gamma = info->at(i*7+0)*info->at(i*7+0) +
2057  info->at(i*7+1)*info->at(i*7+1) - info->at(i*7+3)*info->at(i*7+3);
2058  Ox[i] = info->at(i*7+0) / gamma;
2059  Oy[i] = info->at(i*7+1) / gamma;
2060  Radius[i] = info->at(i*7+3)/gamma;
2061  if (Ox[i]-Radius[i] < xmin) xmin = Ox[i]-Radius[i];
2062  if (Ox[i]+Radius[i] > xmax) xmax = Ox[i]+Radius[i];
2063  if (Oy[i]-Radius[i] < ymin) ymin = Oy[i]-Radius[i];
2064  if (Oy[i]+Radius[i] > ymax) ymax = Oy[i]+Radius[i];
2065  }
2066  }
2067 
2068 
2069 // Mvd hits;
2070 
2071  double CC,
2072  pseudoRadius = 0.01 ; // 'raggio' di Pixel e Strip;
2073  // Pixel
2074  for( i=0; i< nMvdPixelHit; i++) {
2075  // here, for the boundary calculation, it is enough to approximate the
2076  // rectangular sensor in a circle of radius 0.01 in XY space;
2077 
2078  CC = XMvdPixel->at(i)*XMvdPixel->at(i) + YMvdPixel->at(i)*YMvdPixel->at(i);
2079  // assumo un raggio del circolo che ingloba il sensore di 0.01 cm;
2080  gamma = CC - pseudoRadius*pseudoRadius;
2081  PixelU[i] = XMvdPixel->at(i) / gamma;
2082  PixelV[i] = YMvdPixel->at(i) / gamma;
2083  RadiusP[i] = pseudoRadius/gamma;
2084 
2085  if (PixelU[i]-RadiusP[i] < xmin) xmin = PixelU[i]-RadiusP[i];
2086  if (PixelU[i]+RadiusP[i] > xmax) xmax = PixelU[i]+RadiusP[i];
2087  if (PixelV[i]-RadiusP[i] < ymin) ymin = PixelV[i]-RadiusP[i];
2088  if (PixelV[i]+RadiusP[i] > ymax) ymax = PixelV[i]+RadiusP[i];
2089 
2090  } // end of for( i=0; i< nMvdPixelHit; i++)
2091 
2092  // Strip
2093  for( i=0; i< nMvdStripHit; i++) {
2094  // here, for the boundary calculation, it is enough to approximate the
2095  // rectangular sensor in a circle of radius 0.01 in XY space;
2096 
2097  CC = XMvdStrip->at(i)*XMvdStrip->at(i) + YMvdPixel->at(i)*YMvdStrip->at(i);
2098  // assumo un raggio del circolo che ingloba il sensore di 0.01 cm;
2099  gamma = CC - pseudoRadius*pseudoRadius;
2100  StripU[i] = XMvdStrip->at(i) / gamma;
2101  StripV[i] = YMvdStrip->at(i) / gamma;
2102  RadiusS[i] = pseudoRadius/gamma;
2103 
2104  if (StripU[i]-RadiusS[i] < xmin) xmin = StripU[i]-RadiusS[i];
2105  if (StripU[i]+RadiusS[i] > xmax) xmax = StripU[i]+RadiusS[i];
2106  if (StripV[i]-RadiusS[i] < ymin) ymin = StripV[i]-RadiusS[i];
2107  if (StripV[i]+RadiusS[i] > ymax) ymax = StripV[i]+RadiusS[i];
2108 
2109  } // end of for( i=0; i< nMvdStripHit; i++)
2110 
2111 
2112 
2113  if( xmin > 0. ) xmin = 0.;
2114  if( xmax < 0.) xmax = 0.;
2115  if( ymin > 0. ) ymin = 0.;
2116  if( ymax < 0.) ymax = 0.;
2117 
2118  deltax = xmax-xmin;
2119  deltay = ymax - ymin;
2120 
2121  if( deltax > deltay) {
2122  ymin -= 0.5*(deltax-deltay);
2123  ymax = ymin+ deltax;
2124  delta = deltax;
2125  } else {
2126  xmin -= 0.5*(deltay-deltax);
2127  xmax = xmin+ deltay;
2128  delta= deltay;
2129  }
2130 
2131  xmax = xmax + delta*0.15;
2132  xmin = xmin - delta*0.15;
2133 
2134  ymax = ymax + delta*0.15;
2135  ymin = ymin - delta*0.15;
2136 
2137 
2138 
2139  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
2140  xmin,ymin,xmax,ymax);
2141 
2142 // ora la grigliatura con i cerchi
2143 
2144  fprintf(MACRO,
2145  "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2146  In_Put.NRDIVCONFORMAL,1./RSTRAWDETECTORMIN,1./RSTRAWDETECTORMIN,
2147  In_Put.NRDIVCONFORMAL,In_Put.NRDIVCONFORMAL);
2148 
2149  for( i=In_Put.NRDIVCONFORMAL-1; i>=0 ; i--) {
2150  fprintf(MACRO,
2151  "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2152  i,In_Put.radiaConf[i],In_Put.radiaConf[i],i,i);
2153  }
2154 //---------------------
2155 // ora la grigliatura con i segmenti blu per delimitare la zona degli Stt.
2156 
2157  for(i=0; i<In_Put.NFIDIVCONFORMAL; i++) {
2158  ff = i*2.*PI/In_Put.NFIDIVCONFORMAL;
2159  x1=cos(ff)/RSTRAWDETECTORMAX;
2160  y1=sin(ff)/RSTRAWDETECTORMAX;
2161  x2=cos(ff)/RSTRAWDETECTORMIN;
2162  y2=sin(ff)/RSTRAWDETECTORMIN;
2163  fprintf(MACRO,
2164 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
2165  i,x1,y1,x2,y2,i,i);
2166  }
2167 //---------------------
2168 // ora la grigliatura con i segmenti magenta per comprendere la zona degli SciTil.
2169 
2170  double RMAXSCITIL=50.; //cm
2171  for(i=0; i<In_Put.NFIDIVCONFORMAL; i++) {
2172  ff = i*2.*PI/In_Put.NFIDIVCONFORMAL;
2173  x1=cos(ff)/RMAXSCITIL;
2174  y1=sin(ff)/RMAXSCITIL;
2175  x2=cos(ff)/RSTRAWDETECTORMAX;
2176  y2=sin(ff)/RSTRAWDETECTORMAX;
2177  fprintf(MACRO,"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
2178  i,x1,y1,x2,y2,i,i);
2179  }
2180 //---------------------
2181 
2182  fprintf(MACRO,"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",xmin,0.,xmax,0.,xmin,xmax);
2183  fprintf(MACRO,"Assex->SetTitle(\"U \");\n");
2184  fprintf(MACRO,"Assex->SetTitleOffset(1.5);\n");
2185  fprintf(MACRO,"Assex->Draw();\n");
2186  fprintf(MACRO,"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n", 0.,ymin,0.,ymax,ymin,ymax);
2187  fprintf(MACRO,"Assey->SetTitle(\"V \");\n");
2188  fprintf(MACRO,"Assey->SetTitleOffset(1.5);\n");
2189  fprintf(MACRO,"Assey->Draw();\n");
2190 
2191 
2192 // plot degli Hits Stt.
2193  for( i=0; i< Nhits; i++) {
2194  if(!In_Put.InclusionListStt[i]) continue;
2195  if( info->at(i*7+5) == 1 ) { // parallel straws
2196  fprintf(MACRO,
2197 "TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
2198  i,Ox[i],Oy[i],Radius[i],Radius[i],i,i);
2199  }
2200  }
2201 
2202 
2203 
2204 // plot degli Hits Pixel Mvd.
2205  for( i=0; i< nMvdPixelHit; i++) {
2206  fprintf(MACRO,
2207 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
2208  i,PixelU[i],PixelV[i],26,i,i);
2209 //"TEllipse* Pixel%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nPixel%d->SetFillStyle(0);\nPixel%d->Draw();\n",
2210 // i,PixelU[i],PixelV[i],RadiusP[i],RadiusP[i],i,i);
2211  }
2212 //-----------
2213 
2214 
2215 
2216 // plot degli Hits Strip Mvd.
2217  for( i=0; i< nMvdStripHit; i++) {
2218  fprintf(MACRO,
2219 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
2220  i,StripU[i],StripV[i],25,i,i);
2221 // "TEllipse* Strip%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nStrip%d->SetFillStyle(0);\nStrip%d->Draw();\n",
2222 // i,StripU[i],StripV[i],RadiusS[i],RadiusS[i],i,i);
2223  }
2224 //-----------
2225 // plot degli Hit SciTil
2226  for( i=0; i< nSciTilHits; i++) {
2227 
2228 
2230  1, // goes in the SetColor function of root;
2231  In_Put.dimensionscitil,
2232  MACRO,
2233  posizSciTil->at(i*3+0),
2234  posizSciTil->at(i*3+1),
2235  i,
2236  2 // 2--> disegno SciTil in conforme.
2237  );
2238  }
2239 
2240 
2241 
2242 
2243 //------------------ plotting all the tracks found
2244 
2245 
2246  for(i=0; i<nTracksFoundSoFar; i++){
2247  if(!keepit->at(i)) continue;
2248 
2249  ALFA[i] = -2.*Oxxx->at(i);
2250  BETA[i] = -2.*Oyyy->at(i);
2251  GAMMA[i]= Oxxx->at(i)*Oxxx->at(i)+Oyyy->at(i)*Oyyy->at(i)
2252  - R->at(i) * R->at(i);
2253  if( fabs(GAMMA[i]) > 1.e-10) {
2254  aaa = -0.5*ALFA[i]/GAMMA[i];
2255  bbb = -0.5*BETA[i]/GAMMA[i];
2256  rrr = sqrt( aaa*aaa+bbb*bbb-1./GAMMA[i]);
2257  if( fabs(rrr/GAMMA[i]) < 30.) {
2258  fprintf(MACRO,
2259 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,0.,360.);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw();\n",
2260  i,aaa,bbb,rrr,rrr,i,i,i);
2261  } else{
2262 
2263 
2264  yl = -xmin*ALFA[i]/BETA[i] - 1./BETA[i];
2265  yu = -xmax*ALFA[i]/BETA[i] - 1./BETA[i];
2266  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2267  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
2268  fprintf(MACRO,"ris%d->Draw();\n",i);
2269 
2270 
2271 
2272  }
2273  } else {
2274 
2275  if(fabs(BETA[i]) < 1.e-10){
2276  if(fabs(ALFA[i])<1.e-10) {
2277  continue;
2278  } else {
2279  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n"
2280  ,i,-1./ALFA[i],ymin,- 1./ALFA[i],ymax);
2281  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
2282  fprintf(MACRO,"ris%d->Draw();\n",i);
2283  }
2284  } else {
2285  yl = -xmin*ALFA[i]/BETA[i] - 1./BETA[i];
2286  yu = -xmax*ALFA[i]/BETA[i] - 1./BETA[i];
2287  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2288  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
2289  fprintf(MACRO,"ris%d->Draw();\n",i);
2290  }
2291 
2292  }
2293 
2294  } // end of for(i=0; i<nTracksFoundSoFar; i++)
2295 
2296 // ------------------------------
2297 
2298 
2299 // plotting all the tracks MC generated
2300  if(doMcComparison){
2301  Int_t icode;
2302  Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;// Dd, Fifi, //[R.K. 01/2017] unused variable?
2303  PndMCTrack* pMC;
2304  for(i=0;i<nMCTracks; i++){
2305  pMC = (PndMCTrack*) In_Put.fMCTrackArray->At(i);
2306  if ( ! pMC ) continue;
2307  icode = pMC->GetPdgCode() ; // PDG code of track
2308  Oxx = pMC->GetStartVertex().X(); // X of starting point track
2309  Oyy = pMC->GetStartVertex().Y(); // Y of starting point track
2310  Px = pMC->GetMomentum().X();
2311  Py = pMC->GetMomentum().Y();
2312  aaa = sqrt( Px*Px + Py*Py);
2313  Rr = aaa*1000./(BFIELD*CVEL); // R (cm) of Helix of track projected in XY plane; B = 2 Tesla
2314  TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2315  TParticlePDG *fParticle= fdbPDG->GetParticle(icode);
2316  if (icode>1000000000) carica = 1.;
2317  else carica = fParticle->Charge()/3. ; // charge of track
2318  if (fabs(carica)<0.1 ) continue;
2319  Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
2320  Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
2321  gamma = -Rr*Rr + Cx*Cx+Cy*Cy;
2322  if(fabs(gamma)< 0.001) {
2323  if(Cy != 0.) {
2324  yl = xmin*(-Cx/Cy) + 0.5/Cy;
2325  yu = xmax*(-Cx/Cy) + 0.5/Cy;
2326  xl = xmin;
2327  xu = xmax;
2328  } else {
2329  yl = ymin;
2330  yu = ymax;
2331  xu=xl = 0.5/Cx;
2332  }
2333  fprintf(MACRO,"TLine* MCris%d = new TLine(%f,%f,%f,%f);\n",i,xl,yl,xu,yu);
2334  fprintf(MACRO,"MCris%d->SetLineStyle(2);\n",i);
2335  fprintf(MACRO,"MCris%d->SetLineColor(3);\n",i);
2336  fprintf(MACRO,"MCris%d->SetLineWidth(1);\n",i);
2337  fprintf(MACRO,"MCris%d->Draw();\n",i);
2338 
2339  } else {
2340  if(fabs(Rr/gamma) > 1.) {
2341  if(fabs(Cy)>0.001 ) {
2342  yl = -xmin*Cx/Cy+0.5/Cy;
2343  yu = -xmax*Cx/Cy+0.5/Cy;
2344  fprintf(MACRO,"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2345  fprintf(MACRO,"MCline%d->SetLineColor(3);\n",i);
2346  fprintf(MACRO,"MCline%d->Draw();\n",i);
2347  } else {
2348  fprintf(MACRO,"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n"
2349  ,i,2.*Cx,ymin,2.*Cx,ymax);
2350  fprintf(MACRO,"MCline%d->SetLineColor(2);\n",i);
2351  fprintf(MACRO,"MCline%d->Draw();\n",i);
2352  }
2353  } else {
2354  fprintf(MACRO, "TEllipse* MCcerchio%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nMCcerchio%d->SetLineColor(3);\n",
2355  i,Cx/gamma,Cy/gamma,Rr/fabs(gamma),Rr/fabs(gamma),i);
2356 
2357  fprintf(MACRO,"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
2358  i,i,i,i);
2359  }
2360  }
2361  } // end of for(i=0;i<nMCTracks; i++)
2362 
2363  } // end of if(doMcComparison)
2364 
2365 
2366  fprintf(MACRO,"}\n");
2367  fclose(MACRO);
2368 
2369 
2370 
2371 
2372 
2373 
2374  return ;
2375 
2376 }
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Double_t xmax
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
const Double_t BFIELD
Int_t * fParticle
Definition: run_full.C:24
const Double_t PI
Double_t
void disegnaSciTilHit(int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
const Double_t CVEL
Double_t xmin
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
T & at(int index)
Definition: PndTrkVectors.h:54
void PndTrkPlotMacros::WriteMacroParallelHitsGeneral ( Double_t  APOTEMAMAXINNERPARSTRAW,
Double_t  APOTEMAMAXSKEWSTRAW,
Double_t  APOTEMAMINOUTERPARSTRAW,
Double_t  APOTEMAMINSKEWSTRAW,
Double_t  BFIELD,
Double_t  CVEL,
Double_t  DIMENSIONSCITIL,
bool  doMcComparison,
TClonesArray *  fMCTrackArray,
Int_t  Nhits,
Vec< Double_t > *  info,
PndTrkPlotMacros_InputData  In_Put,
int  IVOLTE,
Short_t  nMCTracks,
Short_t  nMvdPixelHit,
Short_t  nMvdStripHit,
Short_t  nSciTilHits,
Short_t  nTracksFoundSoFar,
Vec< bool > *  keepit,
Vec< Double_t > *  FI0,
Vec< Double_t > *  Ox,
Vec< Double_t > *  Oy,
Vec< Double_t > *  posizSciTil,
Vec< Double_t > *  primoangolo,
Vec< Double_t > *  R,
Double_t  RSTRAWDETECTORMAX,
Double_t  RSTRAWDETECTORMIN,
Vec< Double_t > *  sigmaXMvdPixel,
Vec< Double_t > *  sigmaXMvdStrip,
Vec< Double_t > *  sigmaYMvdPixel,
Vec< Double_t > *  sigmaYMvdStrip,
Vec< Double_t > *  ultimoangolo,
Double_t  VERTICALGAP,
Vec< Double_t > *  XMvdPixel,
Vec< Double_t > *  XMvdStrip,
Vec< Double_t > *  YMvdPixel,
Vec< Double_t > *  YMvdStrip 
)

Definition at line 1089 of file PndTrkPlotMacros.cxx.

References Vec< T >::at(), atan2(), cos(), CVEL, Double_t, fabs(), fParticle, PndMCTrack::GetMomentum(), PndMCTrack::GetPdgCode(), PndMCTrack::GetStartVertex(), i, PndTrkPlotMacros_InputData::InclusionListStt, PI, RSTRAWDETECTORMAX, sin(), sqrt(), xmax, and xmin.

1130 {
1131 // fine cambio_in_perl ;
1132 
1133  Int_t i, j, ii;// nup, nlow,Kincl,index,i1, STATUS //[R.K. 01/2017] unused variable?
1134 
1135  Double_t xmin , xmax, ymin, ymax,// xl, xu, yl, yu, //[R.K. 01/2017] unused variable?
1136  //gamma, //[R.K. 01/2017] unused variable?
1137  //dx, dy, diff, d1, d2, //[R.K. 01/2017] unused variable?
1138  //delta, deltax, deltay, deltaz, deltaS, //[R.K. 01/2017] unused variable?
1139  //factor,ff, //[R.K. 01/2017] unused variable?
1140  //zmin, zmax, Smin, Smax, S1, S2, //[R.K. 01/2017] unused variable?
1141  y2,x2,//y1, x1,z1, z2, //[R.K. 01/2017] unused variable?
1142  //vx1, vy1, vz1, C0x1, C0y1, C0z1, //[R.K. 01/2017] unused variable?
1143  aaa, bbb, rrr; //ccc, angle, minor, major, //[R.K. 01/2017] unused variable?
1144  //distance, Rx, Ry, LL, //[R.K. 01/2017] unused variable?
1145  //Aellipsis1, Bellipsis1,fi1, //[R.K. 01/2017] unused variable?
1146  //fmin, fmax, offset, step, //[R.K. 01/2017] unused variable?
1147  //SkewInclWithRespectToS, zpos, zpos1, zpos2, //[R.K. 01/2017] unused variable?
1148  //Tiltdirection1[2], //[R.K. 01/2017] unused variable?
1149  //zl[200],zu[200], //[R.K. 01/2017] unused variable?
1150  //POINTS1[6]; //[R.K. 01/2017] unused variable?
1151 
1152  char nome[300], nome2[300];
1153 
1154  const double PI = 3.141592654;
1155 
1156 
1157 
1158 
1159 //---------- parallel straws Macro now
1160  sprintf(nome,"MacroSttMvdAllHitsEvent%d", IVOLTE);
1161  sprintf(nome2,"%s.C",nome);
1162  FILE * MACRO = fopen(nome2,"w");
1163  fprintf(MACRO,"void %s()\n{\n",nome);
1164 
1165 
1166  xmin=-1.3*RSTRAWDETECTORMAX;
1167  xmax=1.3*RSTRAWDETECTORMAX;
1168  ymin=-1.3*RSTRAWDETECTORMAX;
1169  ymax=1.3*RSTRAWDETECTORMAX;
1170 
1171 
1172  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1173 
1174  disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1175 
1176 // disegna il BiHexagon destro e sinistro delle inner parallel straws.
1177  char myname[100];
1178 
1179  sprintf(myname,"InnerPar");
1181  VERTICALGAP,
1182  MACRO,
1183  RSTRAWDETECTORMIN,
1185  4, // color code, 4= blue.
1186  myname
1187  );
1188 //--------------
1189 // disegna il BiHexagon destro e sinistro delle skew straws.
1190  sprintf(myname,"Skew");
1192  VERTICALGAP,
1193  MACRO,
1196  2, // color code.
1197  myname
1198  );
1199 //--------------
1200 // disegna il BiHexagon destro e sinistro delle skew straws.
1201  sprintf(myname,"OuterPar");
1203  VERTICALGAP,
1204  MACRO,
1207  4, // color code.
1208  myname
1209  );
1210 //--------------
1211 
1212  for( i=0; i< Nhits; i++) {
1213  if(!In_Put.InclusionListStt[i]) continue;
1214  if( info->at(i*7+5) == 1 ) { // parallel straws
1215 fprintf(MACRO,"TEllipse* Paral%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParal%d->SetFillStyle(0);\nParal%d->Draw();\n",
1216  i,info->at(i*7+0),info->at(i*7+1),info->at(i*7+3),info->at(i*7+3),i,i);
1217  } else { // skew straws.
1218 fprintf(MACRO,"TMarker* Skew%d = new TMarker(%f,%f,%d);\nSkew%d->SetMarkerColor(1);\nSkew%d->Draw();\n",
1219  i,info->at(i*7+0),info->at(i*7+1),28,i,i);
1220  }
1221  }
1222 
1223  for( ii=0; ii< nMvdStripHit; ii++) {
1224  //x1= XMvdStrip->at(ii)-sigmaXMvdStrip->at(ii); //[R.K. 01/2017] unused variable?
1225  x2= XMvdStrip->at(ii)+sigmaXMvdStrip->at(ii);
1226  //y1= YMvdStrip->at(ii)-sigmaYMvdStrip->at(ii); //[R.K. 01/2017] unused variable?
1227  y2= YMvdStrip->at(ii)+sigmaYMvdStrip->at(ii);
1228 fprintf(MACRO,
1229  "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1230  ii,XMvdStrip->at(ii),YMvdStrip->at(ii),25,ii,ii);
1231 
1232 
1233  }
1234  for( ii=0; ii< nMvdPixelHit; ii++) {
1235  //x1= XMvdPixel->at(ii)-sigmaXMvdPixel->at(ii); //[R.K. 01/2017] unused variable?
1236  x2= XMvdPixel->at(ii)+sigmaXMvdPixel->at(ii);
1237  //y1= YMvdPixel->at(ii)-sigmaYMvdPixel->at(ii); //[R.K. 01/2017] unused variable?
1238  y2= YMvdPixel->at(ii)+sigmaYMvdPixel->at(ii);
1239 fprintf(MACRO,
1240 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1241  ii,XMvdPixel->at(ii),YMvdPixel->at(ii),26,ii,ii);
1242  }
1243 
1244 
1245 //---- disegna gli Scitil.
1246 
1247 
1248  for( i=0; i< nSciTilHits; i++) {
1250  1, // color code (the same as in SetColor of root);
1252  MACRO,
1253  posizSciTil->at(i*3+0),
1254  posizSciTil->at(i*3+1),
1255  i,
1256  0// if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
1257  // SciTil draw in UV.
1258  );
1259  }
1260 //------------------------
1261 
1262 //------------------------------- plotting all the tracks found
1263 
1264  for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1265 
1266  if(!keepit->at(i)) continue;
1267  ii++;
1268  aaa = Ox->at(i);
1269  bbb = Oy->at(i);
1270  rrr = R->at(i);
1271  fprintf(MACRO,
1272 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,%f,%f);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw(\"only\");\n",
1273  ii,aaa,bbb,rrr,rrr,primoangolo->at(i),ultimoangolo->at(i),ii,ii,ii);
1274 
1275 
1276  }
1277 
1278 // -----------
1279 
1280 
1281  fprintf(MACRO,"}\n");
1282  fclose(MACRO);
1283 
1284 //------------------------------------------------------------------------------------------------------------
1285 
1286  if(!doMcComparison) return;
1287 
1288 //---------- parallel straws Macro now con anche le tracce MC
1289 
1290  sprintf(nome,"MacroSttMvdAllHitswithMCEvent%d", IVOLTE);
1291  sprintf(nome2,"%s.C",nome);
1292  MACRO = fopen(nome2,"w");
1293  fprintf(MACRO,"void %s()\n{\n",nome);
1294 
1295 
1296  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1297 
1298 
1299  disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1300 
1301 // disegna il BiHexagon destro e sinistro delle inner parallel straws.
1302  sprintf(myname,"InnerPar");
1304  VERTICALGAP,
1305  MACRO,
1306  RSTRAWDETECTORMIN,
1308  4, // color code, 4= blue.
1309  myname
1310  );
1311 //--------------
1312 // disegna il BiHexagon destro e sinistro delle skew straws.
1313  sprintf(myname,"Skew");
1315  VERTICALGAP,
1316  MACRO,
1319  2, // color code.
1320  myname
1321  );
1322 //--------------
1323 // disegna il BiHexagon destro e sinistro delle skew straws.
1324  sprintf(myname,"OuterPar");
1326  VERTICALGAP,
1327  MACRO,
1330  4, // color code.
1331  myname
1332  );
1333 //--------------
1334 
1335  for( i=0; i< Nhits; i++) {
1336 
1337 
1338 
1339  if( ! In_Put.InclusionListStt[i] ) continue;
1340  if( info->at(i*7+5) == 1 ) { // parallel straws
1341 fprintf(MACRO,"TEllipse* Paral%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParal%d->SetFillStyle(0);\nParal%d->Draw();\n",
1342  i,info->at(i*7+0),info->at(i*7+1),info->at(i*7+3),info->at(i*7+3),i,i);
1343  } else { // skew straws.
1344 fprintf(MACRO,"TMarker* Skew%d = new TMarker(%f,%f,%d);\nSkew%d->SetMarkerColor(1);\nSkew%d->Draw();\n",
1345  i,info->at(i*7+0),info->at(i*7+1),28,i,i);
1346  }
1347  }
1348 
1349  for( ii=0; ii< nMvdStripHit; ii++) {
1350  //x1= XMvdStrip->at(ii)-sigmaXMvdStrip->at(ii); //[R.K. 01/2017] unused variable?
1351  x2= XMvdStrip->at(ii)+sigmaXMvdStrip->at(ii);
1352  //y1= YMvdStrip->at(ii)-sigmaYMvdStrip->at(ii); //[R.K. 01/2017] unused variable?
1353  y2= YMvdStrip->at(ii)+sigmaYMvdStrip->at(ii);
1354 fprintf(MACRO,
1355  "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1356  ii,XMvdStrip->at(ii),YMvdStrip->at(ii),25,ii,ii);
1357 
1358 
1359  }
1360  for( ii=0; ii< nMvdPixelHit; ii++) {
1361  //x1= XMvdPixel->at(ii)-sigmaXMvdPixel->at(ii); //[R.K. 01/2017] unused variable?
1362  x2= XMvdPixel->at(ii)+sigmaXMvdPixel->at(ii);
1363  //y1= YMvdPixel->at(ii)-sigmaYMvdPixel->at(ii); //[R.K. 01/2017] unused variable?
1364  y2= YMvdPixel->at(ii)+sigmaYMvdPixel->at(ii);
1365 fprintf(MACRO,
1366 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1367  ii,XMvdPixel->at(ii),YMvdPixel->at(ii),26,ii,ii);
1368  }
1369 
1370 //---- disegna gli Scitil.
1371 
1372  for( i=0; i< nSciTilHits; i++) {
1373 //inizio cambio_in_perl
1374 
1376  1, // color code, the same as in SetColor of root;
1378  MACRO,
1379  posizSciTil->at(i*3+0),
1380  posizSciTil->at(i*3+1),
1381  i,
1382  0// if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ;
1383  // else SciTil draw in UV.
1384  );
1385  }
1386 
1387 //fine cambio_in_perl
1388 
1389 //------------------------
1390 
1391 
1392 
1393 
1394 //------------------------------- plotting all the tracks found
1395  for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1396 
1397  if(!keepit->at(i)) continue;
1398  ii++;
1399  aaa = Ox->at(i);
1400  bbb = Oy->at(i);
1401  rrr = R->at(i);
1402  fprintf(MACRO,
1403 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,%f,%f);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw(\"only\");\n",
1404  ii,aaa,bbb,rrr,rrr,primoangolo->at(i),ultimoangolo->at(i),ii,ii,ii);
1405 
1406 
1407  }
1408 
1409 //----------------- ora le traccia MC
1410  for(i=0; i<nMCTracks;i++) {
1411  Int_t icode;
1412  Double_t alfa0, newalfa, newx, newy,primo, ultimo ;
1413  Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;// Dd, Fifi, //[R.K. 01/2017] unused variable?
1414  PndMCTrack* pMC;
1415  pMC = (PndMCTrack*) fMCTrackArray->At(i);
1416  TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1417  if ( pMC ) {
1418  icode = pMC->GetPdgCode() ; // PDG code of track
1419  TParticlePDG *fParticle= fdbPDG->GetParticle(icode);
1420  if (icode>1000000000) carica = 1.;
1421  else carica = fParticle->Charge()/3. ; // charge of track
1422  Oxx = pMC->GetStartVertex().X(); // X of starting point track
1423  Oyy = pMC->GetStartVertex().Y(); // Y of starting point track
1424  Px = pMC->GetMomentum().X();
1425  Py = pMC->GetMomentum().Y();
1426  aaa = sqrt( Px*Px + Py*Py);
1427  if( fabs(carica) > 0.1 ){
1428  Rr = aaa*1000./(BFIELD*CVEL); //R(cm) of Helix of track projected in XY plane;
1429  // B = 2 Tesla
1430  Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
1431  Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
1432 
1433  // calcolo per plottare solo la parte rilevante della traccia MC.
1434  primo=alfa0 = atan2(Oyy-Cy, Oxx-Cx);
1435  bool flaggo=true;
1436  for(j=0;j<90;j++){
1437  newalfa = alfa0 - carica*j*PI/45;
1438  newx = Cx + Rr*cos(newalfa);
1439  newy = Cy + Rr*sin(newalfa);
1440  if(newx > xmax || newx < xmin || newy>ymax||newy<ymin){
1441  ultimo = newalfa;
1442  if(primo > ultimo ) { primo = ultimo; ultimo = alfa0;};
1443  flaggo=false;
1444  break;
1445  }
1446  }
1447  if(flaggo){
1448  primo = 0.;
1449  ultimo = 2.*PI;
1450  }
1451 
1452  fprintf(MACRO,
1453 "TEllipse* MC%d = new TEllipse(%f,%f,%f,%f,%f,%f);\nMC%d->SetFillStyle(0);\nMC%d->SetLineColor(3);\nMC%d->Draw(\"only\");\n",
1454  i,Cx,Cy,Rr,Rr,primo*180./PI,ultimo*180./PI,i,i,i);
1455 
1456 
1457  } else { // continuation of if( fabs(carica) > 0.1 )
1458  continue; // per ora non plotto le neutre.
1459  // this is a neutral particle (green dashed straight line).
1460  if( Oxx < xmin || Oxx > xmax || Oyy < ymin || Oyy > ymax) continue;
1461  double time, time1, time2;
1462  if(fabs(Px) >1.e-10 ){
1463  time2 = (xmax-Oxx)/Px;
1464  time1 = (xmin-Oxx)/Px;
1465  if(time1<0. && time2<0.) {
1466  continue;
1467  }else if(time2>0.&&time1<0.){
1468  time = time2;
1469  x2 = xmax;
1470  }else if (time1>0. && time2<0.) {
1471  time = time1;
1472  x2 = xmin;
1473  } else{
1474  if( time2>time1 ) {
1475  time=time2;
1476  x2 = xmax;
1477  } else {
1478  time=time1;
1479  x2 = xmin;
1480  }
1481  }
1482  y2 = time*Py + Oyy;
1483  fprintf(MACRO,"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1484  i,Oxx,Oyy,x2,y2);
1485  fprintf(MACRO,"MCneut%d->SetLineStyle(2);\n",i);
1486  fprintf(MACRO,"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
1487  ,i,i);
1488  } else if( fabs(Px) >1.e-10 ) {
1489  if( fabs(Py) >1.e-10 ) continue;
1490  time2 = (ymax-Oyy)/Py;
1491  time1 = (ymin-Oyy)/Py;
1492  if(time1<0. && time2<0.) {
1493  continue;
1494  }else if(time2>0.&&time1<0.){
1495  y2 = ymax;
1496  }else if (time1>0. && time2<0.) {
1497  y2 = ymin;
1498  } else{
1499  y2= time2>time1 ? ymax : ymin ;
1500  }
1501  fprintf(MACRO,"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1502  i,Oxx,Oyy,Oxx,y2);
1503  fprintf(MACRO,"MCneut%d->SetLineStyle(2);\n",i);
1504  fprintf(MACRO,"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
1505  ,i,i);
1506  }
1507 
1508 
1509  } // end of if( fabs(carica) > 0.1 )
1510 
1511 
1512 
1513 
1514  } // end of if ( pMC )
1515 
1516 
1517 
1518  } // end of for(i=0; i<nMCTracks;i++)
1519 //----------- fine parte del MC
1520 
1521  fprintf(MACRO,"}\n");
1522  fclose(MACRO);
1523 
1524 //------------------------------------------------------------------------------------------------------------
1525 
1526 
1527 
1528 
1529  return ;
1530 
1531 }
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Double_t xmax
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
const Double_t APOTEMAMINSKEWSTRAW
const Double_t BFIELD
Int_t * fParticle
Definition: run_full.C:24
void DrawBiHexagonInMacro(Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
const Double_t PI
Double_t
const Double_t APOTEMAMINOUTERPARSTRAW
void disegnaSciTilHit(int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
const Double_t VERTICALGAP
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
const Double_t APOTEMAMAXINNERPARSTRAW
const Double_t CVEL
Double_t xmin
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
const Double_t APOTEMAMAXSKEWSTRAW
T & at(int index)
Definition: PndTrkVectors.h:54
void DrawHexagonCircleInMacro(Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
void disegnaAssiXY(FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
const Double_t DIMENSIONSCITIL
void PndTrkPlotMacros::WriteMacroParallelHitsGeneralConformalwithMC ( Double_t  APOTEMAMAXINNERPARSTRAW,
Double_t  APOTEMAMAXSKEWSTRAW,
Double_t  APOTEMAMINOUTERPARSTRAW,
Double_t  APOTEMAMINSKEWSTRAW,
Double_t  BFIELD,
Double_t  CVEL,
Double_t  DIMENSIONSCITIL,
bool  doMcComparison,
TClonesArray *  fMCTrackArray,
Int_t  Nhits,
Vec< Double_t > *  info,
PndTrkPlotMacros_InputData  In_Put,
int  IVOLTE,
Short_t  nMCTracks,
Short_t  nMvdPixelHit,
Short_t  nMvdStripHit,
Short_t  nSciTilHits,
Short_t  nTracksFoundSoFar,
Vec< bool > *  keepit,
Vec< Double_t > *  FI0,
Vec< Double_t > *  Ox,
Vec< Double_t > *  Oy,
Vec< Double_t > *  posizSciTil,
Vec< Double_t > *  primoangolo,
Vec< Double_t > *  R,
Double_t  RSTRAWDETECTORMAX,
Double_t  RSTRAWDETECTORMIN,
Vec< Double_t > *  sigmaXMvdPixel,
Vec< Double_t > *  sigmaXMvdStrip,
Vec< Double_t > *  sigmaYMvdPixel,
Vec< Double_t > *  sigmaYMvdStrip,
Vec< Double_t > *  ultimoangolo,
Double_t  VERTICALGAP,
Vec< Double_t > *  XMvdPixel,
Vec< Double_t > *  XMvdStrip,
Vec< Double_t > *  YMvdPixel,
Vec< Double_t > *  YMvdStrip 
)

Definition at line 1543 of file PndTrkPlotMacros.cxx.

References Vec< T >::at(), cos(), CVEL, PndTrkPlotMacros_InputData::dimensionscitil, Double_t, fabs(), PndTrkPlotMacros_InputData::fMCTrackArray, fParticle, PndMCTrack::GetMomentum(), PndMCTrack::GetPdgCode(), PndMCTrack::GetStartVertex(), i, PndTrkPlotMacros_InputData::InclusionListStt, PndTrkPlotMacros_InputData::NFIDIVCONFORMAL, PndTrkPlotMacros_InputData::NRDIVCONFORMAL, PI, PndTrkPlotMacros_InputData::radiaConf, RSTRAWDETECTORMAX, sin(), sqrt(), xmax, and xmin.

1583 {
1584 // fine cambio_in_perl ;
1585 
1586  Int_t i; // j, i1, ii,index, Kincl,, nlow, nup, STATUS //[R.K. 01/2017] unused variable?
1587 
1588  Double_t xmin , xmax, ymin, ymax, xl, xu, yl, yu,
1589  gamma,
1590  //dx, dy, diff, d1, d2, //[R.K. 01/2017] unused variable?
1591  delta, deltax, deltay, //deltaz, deltaS, //[R.K. 01/2017] unused variable?
1592  ff,//factor, //[R.K. 01/2017] unused variable?
1593  //zmin, zmax, Smin, Smax, S1, S2, //[R.K. 01/2017] unused variable?
1594  y1, y2,x1,x2, // z1, z2, //[R.K. 01/2017] unused variable?
1595  //vx1, vy1, vz1, C0x1, C0y1, C0z1, //[R.K. 01/2017] unused variable?
1596  aaa, bbb, rrr;// ccc, angle, minor, major, //[R.K. 01/2017] unused variable?
1597  //distance, Rx, Ry, LL, //[R.K. 01/2017] unused variable?
1598  //Aellipsis1, Bellipsis1,fi1, //[R.K. 01/2017] unused variable?
1599  //fmin, fmax, offset, step, //[R.K. 01/2017] unused variable?
1600  //SkewInclWithRespectToS, zpos, zpos1, zpos2, //[R.K. 01/2017] unused variable?
1601  //Tiltdirection1[2], //[R.K. 01/2017] unused variable?
1602  //zl[200],zu[200], //[R.K. 01/2017] unused variable?
1603  //POINTS1[6]; //[R.K. 01/2017] unused variable?
1604 
1605  char nome[300], nome2[300];
1606 
1607  const double PI = 3.141592654;
1608 
1609  Double_t USciT[nSciTilHits];
1610  Vec <Double_t> USciTil(USciT,nSciTilHits,"USciTil");
1611 
1612  Double_t VSciT[nSciTilHits];
1613  Vec <Double_t> VSciTil(VSciT,nSciTilHits,"VSciTil");
1614 
1615  Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
1616  Vec <Double_t> Ox(oX,Nhits,"Ox");
1617  Vec <Double_t> Oy(oY,Nhits,"Oy");
1618  Vec <Double_t> Radius(Radi,Nhits,"Radius");
1619 
1620  Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
1621  GAMM[nTracksFoundSoFar];
1622  Vec <Double_t> ALFA(ALF,nTracksFoundSoFar,"ALFA");
1623  Vec <Double_t> BETA(BET,nTracksFoundSoFar,"BETA");
1624  Vec <Double_t> GAMMA(GAMM,nTracksFoundSoFar,"GAMMA");
1625 
1626 //---------- parallel straws Macro now con anche le tracce MC
1627 
1628 
1629  sprintf(nome,"MacroSttAllHitsConformalwithMCEvent%d", IVOLTE);
1630  sprintf(nome2,"%s.C",nome);
1631  FILE * MACRO = fopen(nome2,"w");
1632  fprintf(MACRO,"void %s()\n{\n",nome);
1633 
1634  xmin=1.e20;
1635  xmax=-1.e20;
1636  ymin=1.e20;
1637  ymax=-1.e20;
1638 
1639 
1640 
1641 //--- SciTil info
1642  for( i=0; i< nSciTilHits; i++) {
1643  Double_t erre = posizSciTil->at(i*3+0)*posizSciTil->at(i*3+0)+
1644  posizSciTil->at(i*3+1)*posizSciTil->at(i*3+1);
1645  USciTil[i] = posizSciTil->at(i*3+0)/erre;
1646  VSciTil[i] = posizSciTil->at(i*3+1)/erre;
1647  if (USciTil[i] < xmin) xmin = USciTil[i];
1648  if (USciTil[i] > xmax) xmax = USciTil[i];
1649  if (VSciTil[i] < ymin) ymin = VSciTil[i];
1650  if (VSciTil[i] > ymax) ymax = VSciTil[i];
1651  }
1652 //------
1653 
1654 
1655  for( i=0; i< Nhits; i++) {
1656  if(!In_Put.InclusionListStt[i]) continue;
1657  if( info->at(i*7+5) == 1 ) { // parallel straws
1658 // centro sfera in sistema conforme
1659  gamma = info->at(i*7+0)*info->at(i*7+0) +
1660  info->at(i*7+1)*info->at(i*7+1) - info->at(i*7+3)*info->at(i*7+3);
1661  Ox[i] = info->at(i*7+0) / gamma;
1662  Oy[i] = info->at(i*7+1) / gamma;
1663  Radius[i] = info->at(i*7+3)/gamma;
1664  if (Ox[i]-Radius[i] < xmin) xmin = Ox[i]-Radius[i];
1665  if (Ox[i]+Radius[i] > xmax) xmax = Ox[i]+Radius[i];
1666  if (Oy[i]-Radius[i] < ymin) ymin = Oy[i]-Radius[i];
1667  if (Oy[i]+Radius[i] > ymax) ymax = Oy[i]+Radius[i];
1668  }
1669  }
1670 
1671  if( xmin > 0. ) xmin = 0.;
1672  if( xmax < 0.) xmax = 0.;
1673  if( ymin > 0. ) ymin = 0.;
1674  if( ymax < 0.) ymax = 0.;
1675 
1676  deltax = xmax-xmin;
1677  deltay = ymax - ymin;
1678 
1679  if( deltax > deltay) {
1680  ymin -= 0.5*(deltax-deltay);
1681  ymax = ymin+ deltax;
1682  delta = deltax;
1683  } else {
1684  xmin -= 0.5*(deltay-deltax);
1685  xmax = xmin+ deltay;
1686  delta= deltay;
1687  }
1688 
1689  xmax = xmax + delta*0.15;
1690  xmin = xmin - delta*0.15;
1691 
1692  ymax = ymax + delta*0.15;
1693  ymin = ymin - delta*0.15;
1694 
1695 
1696 
1697  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
1698  xmin,ymin,xmax,ymax);
1699 
1700 // ora la grigliatura con i cerchi
1701 
1702  fprintf(MACRO,
1703  "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1704  In_Put.NRDIVCONFORMAL,1./RSTRAWDETECTORMIN,1./RSTRAWDETECTORMIN,
1705  In_Put.NRDIVCONFORMAL,In_Put.NRDIVCONFORMAL);
1706 
1707  for( i=In_Put.NRDIVCONFORMAL-1; i>=0 ; i--) {
1708  fprintf(MACRO,
1709  "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1710  i,In_Put.radiaConf[i],In_Put.radiaConf[i],i,i);
1711  }
1712 //---------------------
1713 // ora la grigliatura con i segmenti blu per delimitare la zona degli Stt.
1714 
1715  for(i=0; i<In_Put.NFIDIVCONFORMAL; i++) {
1716  ff = i*2.*PI/In_Put.NFIDIVCONFORMAL;
1717  x1=cos(ff)/RSTRAWDETECTORMAX;
1718  y1=sin(ff)/RSTRAWDETECTORMAX;
1719  x2=cos(ff)/RSTRAWDETECTORMIN;
1720  y2=sin(ff)/RSTRAWDETECTORMIN;
1721  fprintf(MACRO,
1722 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
1723  i,x1,y1,x2,y2,i,i);
1724  }
1725 //---------------------
1726 // ora la grigliatura con i segmenti magenta per comprendere la zona degli SciTil.
1727 
1728  double RMAXSCITIL=50.; //cm
1729  for(i=0; i<In_Put.NFIDIVCONFORMAL; i++) {
1730  ff = i*2.*PI/In_Put.NFIDIVCONFORMAL;
1731  x1=cos(ff)/RMAXSCITIL;
1732  y1=sin(ff)/RMAXSCITIL;
1733  x2=cos(ff)/RSTRAWDETECTORMAX;
1734  y2=sin(ff)/RSTRAWDETECTORMAX;
1735  fprintf(MACRO,"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
1736  i,x1,y1,x2,y2,i,i);
1737  }
1738 //---------------------
1739 
1740  fprintf(MACRO,"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",xmin,0.,xmax,0.,xmin,xmax);
1741  fprintf(MACRO,"Assex->SetTitle(\"U \");\n");
1742  fprintf(MACRO,"Assex->SetTitleOffset(1.5);\n");
1743  fprintf(MACRO,"Assex->Draw();\n");
1744  fprintf(MACRO,"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n", 0.,ymin,0.,ymax,ymin,ymax);
1745  fprintf(MACRO,"Assey->SetTitle(\"V \");\n");
1746  fprintf(MACRO,"Assey->SetTitleOffset(1.5);\n");
1747  fprintf(MACRO,"Assey->Draw();\n");
1748 
1749 
1750 // plot degli Hits Stt.
1751  for( i=0; i< Nhits; i++) {
1752  if(!In_Put.InclusionListStt[i]) continue;
1753  if( info->at(i*7+5) == 1 ) { // parallel straws
1754  fprintf(MACRO,
1755 "TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
1756  i,Ox[i],Oy[i],Radius[i],Radius[i],i,i);
1757  }
1758  }
1759 
1760 
1761 
1762 // plot degli Hit SciTil
1763  for( i=0; i< nSciTilHits; i++) {
1764 
1765 
1767  1, // goes in the SetColor function of root;
1768  In_Put.dimensionscitil,
1769  MACRO,
1770  posizSciTil->at(i*3+0),
1771  posizSciTil->at(i*3+1),
1772  i,
1773  2 // 2--> disegno SciTil in conforme.
1774  );
1775  }
1776 
1777 
1778 
1779 
1780 //------------------ plotting all the tracks found
1781 
1782 
1783  for(i=0; i<nTracksFoundSoFar; i++){
1784  if(!keepit->at(i)) continue;
1785 
1786  ALFA[i] = -2.*Oxxx->at(i);
1787  BETA[i] = -2.*Oyyy->at(i);
1788  GAMMA[i]= Oxxx->at(i)*Oxxx->at(i)+Oyyy->at(i)*Oyyy->at(i)
1789  - R->at(i) * R->at(i);
1790  if( fabs(GAMMA[i]) > 1.e-10) {
1791  aaa = -0.5*ALFA[i]/GAMMA[i];
1792  bbb = -0.5*BETA[i]/GAMMA[i];
1793  rrr = sqrt( aaa*aaa+bbb*bbb-1./GAMMA[i]);
1794  if( fabs(rrr/GAMMA[i]) < 30.) {
1795  fprintf(MACRO,
1796 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,0.,360.);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw();\n",
1797  i,aaa,bbb,rrr,rrr,i,i,i);
1798  } else{
1799 
1800 
1801  yl = -xmin*ALFA[i]/BETA[i] - 1./BETA[i];
1802  yu = -xmax*ALFA[i]/BETA[i] - 1./BETA[i];
1803  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1804  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
1805  fprintf(MACRO,"ris%d->Draw();\n",i);
1806 
1807 
1808 
1809  }
1810  } else {
1811 
1812  if(fabs(BETA[i]) < 1.e-10){
1813  if(fabs(ALFA[i])<1.e-10) {
1814  continue;
1815  } else {
1816  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n"
1817  ,i,-1./ALFA[i],ymin,- 1./ALFA[i],ymax);
1818  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
1819  fprintf(MACRO,"ris%d->Draw();\n",i);
1820  }
1821  } else {
1822  yl = -xmin*ALFA[i]/BETA[i] - 1./BETA[i];
1823  yu = -xmax*ALFA[i]/BETA[i] - 1./BETA[i];
1824  fprintf(MACRO,"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1825  fprintf(MACRO,"ris%d->SetLineColor(2);\n",i);
1826  fprintf(MACRO,"ris%d->Draw();\n",i);
1827  }
1828 
1829  }
1830 
1831  } // end of for(i=0; i<nTracksFoundSoFar; i++)
1832 
1833 // ------------------------------
1834 
1835 
1836 // plotting all the tracks MC generated
1837  if(doMcComparison){
1838  Int_t icode;
1839  Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ; // Dd, Fifi, //[R.K. 01/2017] unused variable?
1840  PndMCTrack* pMC;
1841  for(i=0;i<nMCTracks; i++){
1842  pMC = (PndMCTrack*) In_Put.fMCTrackArray->At(i);
1843  if ( ! pMC ) continue;
1844  icode = pMC->GetPdgCode() ; // PDG code of track
1845  Oxx = pMC->GetStartVertex().X(); // X of starting point track
1846  Oyy = pMC->GetStartVertex().Y(); // Y of starting point track
1847  Px = pMC->GetMomentum().X();
1848  Py = pMC->GetMomentum().Y();
1849  aaa = sqrt( Px*Px + Py*Py);
1850  Rr = aaa*1000./(BFIELD*CVEL); // R (cm) of Helix of track projected in XY plane; B = 2 Tesla
1851  TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1852  TParticlePDG *fParticle= fdbPDG->GetParticle(icode);
1853  if (icode>1000000000) carica = 1.;
1854  else carica = fParticle->Charge()/3. ; // charge of track
1855  if (fabs(carica)<0.1 ) continue;
1856  Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
1857  Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
1858  gamma = -Rr*Rr + Cx*Cx+Cy*Cy;
1859  if(fabs(gamma)< 0.001) {
1860  if(Cy != 0.) {
1861  yl = xmin*(-Cx/Cy) + 0.5/Cy;
1862  yu = xmax*(-Cx/Cy) + 0.5/Cy;
1863  xl = xmin;
1864  xu = xmax;
1865  } else {
1866  yl = ymin;
1867  yu = ymax;
1868  xu=xl = 0.5/Cx;
1869  }
1870  fprintf(MACRO,"TLine* MCris%d = new TLine(%f,%f,%f,%f);\n",i,xl,yl,xu,yu);
1871  fprintf(MACRO,"MCris%d->SetLineStyle(2);\n",i);
1872  fprintf(MACRO,"MCris%d->SetLineColor(3);\n",i);
1873  fprintf(MACRO,"MCris%d->SetLineWidth(1);\n",i);
1874  fprintf(MACRO,"MCris%d->Draw();\n",i);
1875 
1876  } else {
1877  if(fabs(Rr/gamma) > 1.) {
1878  if(fabs(Cy)>0.001 ) {
1879  yl = -xmin*Cx/Cy+0.5/Cy;
1880  yu = -xmax*Cx/Cy+0.5/Cy;
1881  fprintf(MACRO,"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1882  fprintf(MACRO,"MCline%d->SetLineColor(3);\n",i);
1883  fprintf(MACRO,"MCline%d->Draw();\n",i);
1884  } else {
1885  fprintf(MACRO,"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n"
1886  ,i,2.*Cx,ymin,2.*Cx,ymax);
1887  fprintf(MACRO,"MCline%d->SetLineColor(2);\n",i);
1888  fprintf(MACRO,"MCline%d->Draw();\n",i);
1889  }
1890  } else {
1891  fprintf(MACRO, "TEllipse* MCcerchio%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nMCcerchio%d->SetLineColor(3);\n",
1892  i,Cx/gamma,Cy/gamma,Rr/fabs(gamma),Rr/fabs(gamma),i);
1893 
1894  fprintf(MACRO,"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
1895  i,i,i,i);
1896  }
1897  }
1898  } // end of for(i=0;i<nMCTracks; i++)
1899 
1900  } // end of if(doMcComparison)
1901 
1902 
1903  fprintf(MACRO,"}\n");
1904  fclose(MACRO);
1905 
1906 
1907 
1908 
1909 
1910 
1911  return ;
1912 
1913 }
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Double_t xmax
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
const Double_t BFIELD
Int_t * fParticle
Definition: run_full.C:24
const Double_t PI
Double_t
void disegnaSciTilHit(int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
const Double_t CVEL
Double_t xmin
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
T & at(int index)
Definition: PndTrkVectors.h:54
void PndTrkPlotMacros::WriteMacroSkewAssociatedHitswithMC ( Double_t ESSE,
Double_t ESSEalone,
PndTrkPlotMacros_InputData  In_Put,
int  iNome,
int  iTrack 
)

Definition at line 2387 of file PndTrkPlotMacros.cxx.

References atan2(), PndTrkPlotMacros_InputData::bfield, BFIELD, PndTrkCTGeometryCalculations::calculateintersections(), PndTrkPlotMacros_InputData::Charge, PndTrkPlotMacros_InputData::cvel, CVEL, PndTrkPlotMacros_InputData::daTrackFoundaTrackMC, PndTrkPlotMacros_InputData::dimensionscitil, DIMENSIONSCITIL, Double_t, fabs(), PndTrkPlotMacros_InputData::FI0, PndTrkPlotMacros_InputData::fMCTrackArray, fParticle, PndMCTrack::GetMomentum(), PndMCTrack::GetPdgCode(), PndMCTrack::GetStartVertex(), h, i, PndTrkPlotMacros_InputData::InclusionListStt, PndTrkPlotMacros_InputData::info, PndTrkPlotMacros_InputData::IVOLTE, PndTrkPlotMacros_InputData::KAPPA, PndTrkPlotMacros_InputData::ListMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::ListMvdStripHitsinTrack, PndTrkPlotMacros_InputData::ListSciTilHitsinTrack, PndTrkPlotMacros_InputData::ListSttSkewHitsinTrack, PndTrkPlotMacros_InputData::MAXMVDPIXELHITSINTRACK, PndTrkPlotMacros_InputData::MAXMVDSTRIPHITSINTRACK, PndTrkPlotMacros_InputData::MAXSCITILHITSINTRACK, PndTrkPlotMacros_InputData::MAXSTTHITSINTRACK, MAXSTTHITSINTRACK, PndTrkPlotMacros_InputData::MCMvdPixelAloneList, PndTrkPlotMacros_InputData::MCMvdStripAloneList, PndTrkPlotMacros_InputData::MCSciTilAloneList, PndTrkPlotMacros_InputData::MCSkewAloneList, PndTrkPlotMacros_InputData::MvdPixelCommonList, PndTrkPlotMacros_InputData::MvdStripCommonList, PndTrkPlotMacros_InputData::nMCMvdPixelAlone, PndTrkPlotMacros_InputData::nMCMvdStripAlone, PndTrkPlotMacros_InputData::nMCSciTilAlone, PndTrkPlotMacros_InputData::nMCSkewAlone, PndTrkPlotMacros_InputData::nMvdPixelCommon, PndTrkPlotMacros_InputData::nMvdPixelHit, PndTrkPlotMacros_InputData::nMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::nMvdStripCommon, PndTrkPlotMacros_InputData::nMvdStripHit, PndTrkPlotMacros_InputData::nMvdStripHitsinTrack, PndTrkPlotMacros_InputData::nSciTilCommon, PndTrkPlotMacros_InputData::nSciTilHits, PndTrkPlotMacros_InputData::nSciTilHitsinTrack, PndTrkPlotMacros_InputData::nSkewCommon, PndTrkPlotMacros_InputData::nSttHit, PndTrkPlotMacros_InputData::nSttSkewHitsinTrack, PndTrkPlotMacros_InputData::Ox, PndTrkPlotMacros_InputData::Oy, PI, PndTrkPlotMacros_InputData::posizSciTil, PndTrkPlotMacros_InputData::R, PndTrkPlotMacros_InputData::SciTilCommonList, PndTrkPlotMacros_InputData::SkewCommonList, sqrt(), PndTrkPlotMacros_InputData::WDX, PndTrkPlotMacros_InputData::WDY, PndTrkPlotMacros_InputData::WDZ, PndTrkPlotMacros_InputData::XMvdPixel, PndTrkPlotMacros_InputData::XMvdStrip, PndTrkPlotMacros_InputData::YMvdPixel, PndTrkPlotMacros_InputData::YMvdStrip, PndTrkPlotMacros_InputData::ZMvdPixel, and PndTrkPlotMacros_InputData::ZMvdStrip.

2394  {
2395 
2396 
2397  int MAXMVDPIXELHITSINTRACK = In_Put.MAXMVDPIXELHITSINTRACK;
2398  int MAXSCITILHITSINTRACK = In_Put.MAXSCITILHITSINTRACK;
2399  int MAXMVDSTRIPHITSINTRACK = In_Put.MAXMVDSTRIPHITSINTRACK;
2400  int MAXSTTHITSINTRACK = In_Put.MAXSTTHITSINTRACK;
2401 
2402  Double_t BFIELD = In_Put.bfield;
2403  Double_t CVEL = In_Put.cvel;
2404  Short_t charge = In_Put.Charge[iTrack] ;
2405  Short_t daTrackFoundaTrackMC = In_Put.daTrackFoundaTrackMC[iTrack] ;
2407  Double_t FI0 = In_Put.FI0[iTrack] ;
2408  TClonesArray *fMCTrackArray = In_Put.fMCTrackArray;
2409 
2410  Double_t *info = In_Put.info ;
2411  int IVOLTE = In_Put.IVOLTE ;
2412  Double_t KAPPA = In_Put.KAPPA[iTrack] ;
2413 
2414  Short_t *ListPixelHitsinTrack = In_Put.ListMvdPixelHitsinTrack ;
2415  Short_t *ListSciTilHitsinTrack = In_Put.ListSciTilHitsinTrack;
2416  Short_t *ListSkewHitsinTrack = In_Put.ListSttSkewHitsinTrack ;
2417  Short_t *ListStripHitsinTrack = In_Put.ListMvdStripHitsinTrack ; // output
2418  Short_t *MCMvdPixelAloneList = In_Put.MCMvdPixelAloneList ;
2419  Short_t *MCMvdStripAloneList = In_Put.MCMvdStripAloneList ;
2420  Short_t *MCSkewAloneList = In_Put.MCSkewAloneList ;
2421  Short_t *MvdPixelCommonList = In_Put.MvdPixelCommonList;
2422  //Short_t *MvdPixelSpuriList = In_Put.MvdPixelSpuriList; //[R.K. 01/2017] unused variable?
2423  Short_t *MvdStripCommonList = In_Put.MvdStripCommonList;
2424 
2425  Short_t nMCMvdPixelAlone = In_Put.nMCMvdPixelAlone[iTrack] ;
2426  Short_t nMCMvdStripAlone = In_Put.nMCMvdStripAlone[iTrack] ;
2427  Short_t nMCSkewAlone = In_Put.nMCSkewAlone[iTrack] ;
2428  Short_t nMvdPixelCommon = In_Put.nMvdPixelCommon[iTrack] ;
2429  //Short_t nMvdPixelSpuriinTrack = In_Put.nMvdPixelSpuriinTrack[iTrack] ; //[R.K. 01/2017] unused variable?
2430  Short_t nMvdStripCommon = In_Put.nMvdStripCommon[iTrack] ;
2431  //Short_t nMvdStripSpuriinTrack = In_Put.nMvdStripSpuriinTrack[iTrack] ; //[R.K. 01/2017] unused variable?
2432 
2433  Short_t *nPixelHitsinTrack = In_Put.nMvdPixelHitsinTrack ;
2434  Short_t *nSciTilHitsinTrack = In_Put.nSciTilHitsinTrack;
2435  Short_t nSkewCommon = In_Put.nSkewCommon[iTrack] ;
2436  Short_t *nSkewHitsinTrack = In_Put.nSttSkewHitsinTrack ;
2437  Short_t *nStripHitsinTrack = In_Put.nMvdStripHitsinTrack ; // output
2438  Double_t Oxx = In_Put.Ox[iTrack] ;
2439  Double_t Oyy = In_Put.Oy[iTrack] ;
2440 
2441  Double_t *posizSciTil = In_Put.posizSciTil;
2442 
2443  Double_t Rr = In_Put.R[iTrack] ;
2444  Short_t *SkewCommonList = In_Put.SkewCommonList ;
2445  Double_t *XMvdPixel = In_Put.XMvdPixel;
2446  Double_t *XMvdStrip = In_Put.XMvdStrip;
2447  Double_t *YMvdPixel = In_Put.YMvdPixel;
2448  Double_t *YMvdStrip = In_Put.YMvdStrip;
2449  Double_t *WDX = In_Put.WDX ;
2450  Double_t *WDY = In_Put.WDY ;
2451  Double_t *WDZ = In_Put.WDZ ;
2452  Double_t *ZMvdPixel = In_Put.ZMvdPixel;
2453  Double_t *ZMvdStrip = In_Put.ZMvdStrip;
2454 
2455 //-----------------------------------------
2456 
2457  TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2458 
2459 
2460  int icolore;
2461 
2462  Int_t i, j, i1, ii, iii, index, STATUS, imc, Nmin, Nmax; // Kincl, nlow, nup,
2463 
2464  Double_t //xmin , xmax, ymin, ymax, //[R.K. 01/2017] unused variable?
2465  //dx, dy, diff, d1, d2, //[R.K. 01/2017] unused variable?
2466  deltaz, deltaS, // delta, deltax, deltay,
2467  esse, //factor,
2468  zmin, zmax, zmin2, zmax2, Smin, Smax, //S1, S2, //[R.K. 01/2017] unused variable?
2469  z1, z2, //y1, y2, //[R.K. 01/2017] unused variable?
2470  vx1, vy1, vz1, C0x1, C0y1, C0z1,
2471  aaa, bbb, //ccc, angle, minor, major, //[R.K. 01/2017] unused variable?
2472  distance, Rx, Ry, LL,
2473  Aellipsis1, Bellipsis1,fi1,
2474  fmin, fmax, //offset, step, //[R.K. 01/2017] unused variable?
2475  SkewInclWithRespectToS, //zpos, zpos1, zpos2, //[R.K. 01/2017] unused variable?
2476  dist[2],
2477  Tiltdirection1[2],
2478  //zl[200],zu[200], //[R.K. 01/2017] unused variable?
2479  POINTS1[6];
2480 
2481  const Double_t PI=3.141592654;
2482 
2483  PndTrkCTGeometryCalculations GeoCalculator;
2484 
2485 
2486 
2487 //------------------- skew straws hits Macro now
2488 
2489  char nome2[300],nome[300];
2490  FILE *MACRO;
2491  sprintf(nome, "MacroSttMvdSZwithMCEvent%dT%d", IVOLTE,iNome);
2492  sprintf(nome2, "%s.C",nome);
2493  MACRO = fopen(nome2,"w");
2494  fprintf(MACRO,"{\n");
2495 
2496 //KAPPA = 1./166.67 ; FI0 = 1.5*PI;
2497 
2498  index=0;
2499 
2500 //--------------- ricerca del minimo e massimo.
2501 
2502  if( nSciTilHitsinTrack[iTrack]+nSkewHitsinTrack[iTrack]+
2503  nPixelHitsinTrack[iTrack]+
2504  nStripHitsinTrack[iTrack] == 1) // solo 1 punto da disegnare, in questo caso aggiunge
2505  { // un punto finto in (0, FI0 ).
2506  Smax=Smin= FI0;
2507  zmax =zmin =0.;
2508  } else {
2509  Smin=zmin = 1.e10;
2510  Smax=zmax = -zmin;
2511  }
2512 
2513 
2514 
2515 // prima lo (gli) hits SciTil associati alla traccia;
2516 
2517  for(i=0; i<nSciTilHitsinTrack[iTrack];i++){
2518  j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+i];
2519  if( ESSE[i]>Smax ) Smax=ESSE[i];
2520  if( ESSE[i]<Smin ) Smin=ESSE[i];
2521  if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
2522  if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
2523  }
2524 
2525 // poi lo (gli) hits SciTil 'Alone' della traccia;
2526 
2527  for(i=0; i<In_Put.nMCSciTilAlone[iTrack];i++){
2528  j=In_Put.MCSciTilAloneList[iTrack*In_Put.nSciTilHits+i];
2529  if( ESSEalone[i]>Smax ) Smax=ESSEalone[i];
2530  if( ESSEalone[i]<Smin ) Smin=ESSEalone[i];
2531  if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
2532  if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
2533  }
2534 
2535 //-------------------------
2536 
2537  for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2538  i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
2539  if(!In_Put.InclusionListStt[i]) continue;
2540  aaa = sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2541  vx1 = WDX[i]/aaa;
2542  vy1 = WDY[i]/aaa;
2543  vz1 = WDZ[i]/aaa;
2544  C0x1 = info[i*7+0];
2545  C0y1 = info[i*7+1];
2546  C0z1 = info[i*7+2];
2547 
2548  GeoCalculator.calculateintersections(Oxx,Oyy,Rr,C0x1,C0y1,C0z1,info[i*7+3],
2549  vx1,vy1,vz1,
2550  &STATUS,POINTS1);
2551  if(STATUS < 0 ) continue ;
2552  for( ii=0; ii<2; ii++){
2553  j=3*ii;
2554  distance = sqrt(
2555  (POINTS1[j]-C0x1)*(POINTS1[j]-C0x1) +
2556  (POINTS1[1+j]-C0y1)*(POINTS1[1+j]-C0y1) +
2557  (POINTS1[2+j]-C0z1)*(POINTS1[2+j]-C0z1)
2558  );
2559  Rx = POINTS1[j]-Oxx ; // x component Radial vector of cylinder of trajectory
2560  Ry = POINTS1[1+j]-Oyy ; // y direction Radial vector of cylinder of trajectory
2561 
2562  aaa = sqrt(Rx*Rx+Ry*Ry);
2563  SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2564  SkewInclWithRespectToS /= Rr;
2565  bbb = sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2566  // the tilt direction of this ellipse is (1,0) when major axis along Z direction
2567 
2568  LL = fabs(vx1*Rx + vy1*Ry);
2569  if( LL < 1.e-10) continue;
2570  Aellipsis1 = info[i*7+3]*aaa/LL;
2571 
2572  Bellipsis1 = info[i*7+3]/Rr;
2573 
2574  if( distance >= info[i*7+4] + Aellipsis1) continue;
2575 
2576 //--------------------------
2577 
2578  fi1 = atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ; // atan2 returns radians in (-pi and +pi]
2579  if( fi1 < 0.) fi1 += 2.*PI;
2580 
2581  if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2582  if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2583 
2584  if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2585  if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2586 
2587  } // end of for( ii=0; ii<2; ii++)
2588 
2589  } // end of for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++)
2590 
2591 //------ aggiungo in blu eventuali punti della traccia MC che sono non mecciati
2592 
2593  for( iii=0; iii< nMCSkewAlone; iii++) {
2594  i = MCSkewAloneList[iTrack*In_Put.nSttHit+iii];
2595  aaa = sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2596  vx1 = WDX[i]/aaa;
2597  vy1 = WDY[i]/aaa;
2598  vz1 = WDZ[i]/aaa;
2599  C0x1 = info[i*7+0];
2600  C0y1 = info[i*7+1];
2601  C0z1 = info[i*7+2];
2602  GeoCalculator.calculateintersections(Oxx,Oyy,Rr,C0x1,C0y1,C0z1,info[i*7+3],
2603  vx1,vy1,vz1,
2604  &STATUS,POINTS1);
2605 
2606  if(STATUS < 0 ) continue ;
2607 
2608  for( ii=0; ii<2; ii++){
2609  j=3*ii;
2610  dist[ii] = sqrt(
2611  (POINTS1[j]-C0x1)*(POINTS1[j]-C0x1) +
2612  (POINTS1[1+j]-C0y1)*(POINTS1[1+j]-C0y1) +
2613  (POINTS1[2+j]-C0z1)*(POINTS1[2+j]-C0z1)
2614  );
2615  }
2616  if(dist[0]>dist[1]) ii=1; else ii=0;
2617 
2618  distance = dist[ii];
2619 
2620  j=3*ii;
2621  distance = sqrt(
2622  (POINTS1[j]-C0x1)*(POINTS1[j]-C0x1) +
2623  (POINTS1[1+j]-C0y1)*(POINTS1[1+j]-C0y1) +
2624  (POINTS1[2+j]-C0z1)*(POINTS1[2+j]-C0z1)
2625  );
2626 
2627 
2628 
2629  Rx = POINTS1[j]-Oxx ; // x component Radial vector of cylinder of trajectory
2630  Ry = POINTS1[1+j]-Oyy ; // y direction Radial vector of cylinder of trajectory
2631 
2632  aaa = sqrt(Rx*Rx+Ry*Ry);
2633  SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2634  SkewInclWithRespectToS /= Rr;
2635  bbb = sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2636  // the tilt direction of this ellipse is (1,0) when major axis along Z direction
2637 
2638  LL = fabs(vx1*Rx + vy1*Ry);
2639  if( LL < 1.e-10) continue;
2640  Aellipsis1 = info[i*7+3]*aaa/LL;
2641 
2642  Bellipsis1 = info[i*7+3]/Rr;
2643 //--------------------------
2644  fi1 = atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ; // atan2 returns radians in (-pi and +pi]
2645  if( fi1 < 0.) fi1 += 2.*PI;
2646 
2647  if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2648  if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2649 
2650  if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2651  if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2652 
2653 
2654 // } // end of for( ii=0; ii<2; ii++)
2655 
2656  } // end of for( iii=0; iii< nMCSkewAlone[imaxima]; iii++)
2657 
2658 //-------------------------------
2659 //------ fine aggiunta in blu eventuali punti della traccia MC che sono non mecciati
2660 
2661 // ora la parte delle Mvd
2662 
2663 // prima i pixel
2664 
2665  for(i=0; i<nPixelHitsinTrack[iTrack];i++){
2666  ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+i];
2667 
2668  if( zmin > ZMvdPixel[ ii ] )
2669  zmin = ZMvdPixel[ ii ];
2670  if( zmax < ZMvdPixel[ii ] )
2671  zmax = ZMvdPixel[ii ];
2672 
2673  esse = atan2( YMvdPixel[ ii ]-Oyy,
2674  XMvdPixel[ ii ]-Oxx);
2675  if(esse<0.) esse +=2.*PI;
2676 
2677 
2678 
2679  if( Smin > esse ) Smin = esse;
2680  if( Smax < esse ) Smax = esse;
2681  }
2682 
2683 // poi le strip
2684 
2685  for(i=0; i<nStripHitsinTrack[iTrack];i++){
2686  ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+i];
2687  if( zmin > ZMvdStrip[ ii ] )
2688  zmin = ZMvdStrip[ ii ];
2689  if( zmax < ZMvdStrip[ii ] )
2690  zmax = ZMvdStrip[ii ];
2691 
2692  esse = atan2( YMvdStrip[ ii ]-Oyy,
2693  XMvdStrip[ ii ]-Oxx);
2694  if(esse<0.) esse +=2.*PI;
2695 
2696 
2697 
2698  if( Smin > esse ) Smin = esse;
2699  if( Smax < esse ) Smax = esse;
2700  }
2701 
2702 
2703 // ora i pixel 'Alone'
2704  for(i=0; i<nMCMvdPixelAlone;i++){
2705 
2706  ii=MCMvdPixelAloneList[iTrack*In_Put.nMvdPixelHit+i];
2707  if( zmin > ZMvdPixel[ ii ] )
2708  zmin = ZMvdPixel[ ii ];
2709  if( zmax < ZMvdPixel[ii ] )
2710  zmax = ZMvdPixel[ii ];
2711 
2712  esse = atan2( YMvdPixel[ ii ]-Oyy,
2713  XMvdPixel[ ii ]-Oxx);
2714  if(esse<0.) esse +=2.*PI;
2715  if( Smin > esse ) Smin = esse;
2716  if( Smax < esse ) Smax = esse;
2717  }
2718 
2719 
2720 // ora le strip 'Alone'
2721 
2722  for(i=0; i<nMCMvdStripAlone;i++){
2723  ii=MCMvdStripAloneList[iTrack*In_Put.nMvdStripHit+i];
2724  if( zmin > ZMvdStrip[ ii ] )
2725  zmin = ZMvdStrip[ ii ];
2726  if( zmax < ZMvdStrip[ii ] )
2727  zmax = ZMvdStrip[ii ];
2728 
2729  esse = atan2( YMvdStrip[ ii ]-Oyy,
2730  XMvdStrip[ ii ]-Oxx);
2731  if(esse<0.) esse +=2.*PI;
2732  if( Smin > esse ) Smin = esse;
2733  if( Smax < esse ) Smax = esse;
2734  }
2735 
2736 
2737  if( zmax >= zmin && Smax >= Smin ) {
2738 
2739 
2740 
2741  aaa = Smax-Smin;
2742  Smin -= aaa*0.2;
2743  Smax += aaa*0.2;
2744 
2745  aaa = zmax-zmin;
2746  zmin -= aaa*0.05;
2747  zmax += aaa*0.05;
2748 
2749  if(Smax > 2.*PI) Smax = 2.*PI;
2750  if( Smin < 0.) Smin = 0.;
2751 
2752 
2753  deltaz = zmax-zmin;
2754  deltaS = Smax-Smin;
2755 
2756 
2757  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
2758  zmin-0.1*deltaz,Rr*(Smin-.1*deltaS),zmax+0.1*deltaz,Rr*(Smax+0.1*deltaS));
2759  for( ii=0; ii< index; ii++) {
2760  fprintf(MACRO,"E%d->Draw();\n",ii);
2761  }
2762  fprintf(MACRO,"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
2763  zmin-0.01*deltaz,Rr*(Smin+0.05*deltaS),zmax+0.01*deltaz,Rr*(Smin+0.05*deltaS),
2764  zmin-0.01*deltaz,zmax+0.01*deltaz);
2765  fprintf(MACRO,"Assex->SetTitle(\"Z (cm)\");\n");
2766  fprintf(MACRO,"Assex->Draw();\n");
2767  fprintf(MACRO,"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
2768  zmin+0.05*deltaz,Rr*(Smin-0.01*deltaS),zmin+0.05*deltaz,Rr*(Smax+0.01*deltaS),
2769  Rr*(Smin-0.01*deltaS),Rr*(Smax+0.01*deltaS));
2770  fprintf(MACRO,"Assey->SetTitle(\"Helix crf (cm)\");\n");
2771  fprintf(MACRO,"Assey->Draw();\n");
2772 
2773 
2774 //------------
2775 // plot di eventuali hits SciTil;
2776  // prima la lista di SciTil 'common' e spuri :
2777  for(i=0;i<nSciTilHitsinTrack[iTrack];i++){
2778  j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+i];
2779  // controlla se sono hit 'common' o spuri;
2780  icolore=2; // colore rosso, assegnato agli spuri;
2781  for(int h=0;h<In_Put.nSciTilCommon[iTrack];h++){
2782  if(j == In_Put.SciTilCommonList[iTrack*MAXSCITILHITSINTRACK+h]){
2783  icolore=1; // colore nero, usato per gli hits 'common';
2784  break;
2785  }
2786  }
2787 
2789  icolore, // color code; the same as in SetColor of root;
2790  DIMENSIONSCITIL,
2791  MACRO,
2792  posizSciTil[j*3+2],
2793  ESSE[i]*Rr,
2794  j,
2795  1 // if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
2796  // SciTil draw in UV.
2797  );
2798  }
2799  // poi la lista di SciTil 'alone' :
2800  for(i=0;i<In_Put.nMCSciTilAlone[iTrack];i++){
2801  j=In_Put.MCSciTilAloneList[iTrack*In_Put.nSciTilHits+i];
2803  4, // color code; the same as in SetColor of root;
2804  DIMENSIONSCITIL,
2805  MACRO,
2806  posizSciTil[j*3+2],
2807  ESSEalone[i]*Rr,
2808  j,
2809  1 // if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
2810  // SciTil draw in UV.
2811  );
2812  }
2813 
2814 // --------------------------------
2815 
2816 
2817 
2818  for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2819  i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
2820  if(!In_Put.InclusionListStt[i]) continue;
2821 
2822  aaa = sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2823  vx1 = WDX[i]/aaa;
2824  vy1 = WDY[i]/aaa;
2825  vz1 = WDZ[i]/aaa;
2826  C0x1 = info[i*7+0];
2827  C0y1 = info[i*7+1];
2828  C0z1 = info[i*7+2];
2829 
2830  GeoCalculator.calculateintersections(Oxx,Oyy,Rr,C0x1,C0y1,C0z1,info[i*7+3],
2831  vx1,vy1,vz1,
2832  &STATUS,POINTS1);
2833  if(STATUS < 0 ) continue ;
2834  for( ii=0; ii<2; ii++){
2835  j=3*ii;
2836  distance = sqrt(
2837  (POINTS1[j]-C0x1)*(POINTS1[j]-C0x1) +
2838  (POINTS1[1+j]-C0y1)*(POINTS1[1+j]-C0y1) +
2839  (POINTS1[2+j]-C0z1)*(POINTS1[2+j]-C0z1)
2840  );
2841  Rx = POINTS1[j]-Oxx ; // x component Radial vector of cylinder of trajectory
2842  Ry = POINTS1[1+j]-Oyy ; // y direction Radial vector of cylinder of trajectory
2843 
2844  aaa = sqrt(Rx*Rx+Ry*Ry);
2845  SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2846  SkewInclWithRespectToS /= Rr;
2847  bbb = sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2848  // the tilt direction of this ellipse is (1,0) when major axis along Z direction
2849  if( bbb > 1.e-10){
2850  Tiltdirection1[0] = vz1/bbb;
2851  Tiltdirection1[1] = SkewInclWithRespectToS/bbb;
2852  } else {
2853  Tiltdirection1[0] = 1.;
2854  Tiltdirection1[1] = 0.;
2855  }
2856 
2857  LL = fabs(vx1*Rx + vy1*Ry);
2858  if( LL < 1.e-10) continue;
2859  Aellipsis1 = info[i*7+3]*aaa/LL;
2860 
2861  Bellipsis1 = info[i*7+3]/Rr;
2862 
2863  if( distance >= info[i*7+4] + Aellipsis1) continue;
2864 
2865 
2866 //--------------------------
2867 
2868 
2869  fi1 = atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ; // atan2 returns radians in (-pi and +pi]
2870  if( fi1 < 0.) fi1 += 2.*PI;
2871 
2872  if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2873  if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2874 
2875  if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2876  if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2877 
2878 
2879  Double_t rotation1 = 180.*atan2(Tiltdirection1[1],Tiltdirection1[0])/PI;
2880 // fprintf(MACRO,"TEllipse* Skew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nSkew%d_%d->SetFillStyle(0);\n",
2881 // i,ii,POINTS1[j+2],Rr*fi1,Aellipsis1,Rr*Bellipsis1,rotation1,i,ii);
2882 
2883 // ------ se lo hit e' spurio marcalo in rosso
2884  bool flaggo=true;
2885  for( i1=0; i1<nSkewCommon; i1++){
2886  if ( SkewCommonList[iTrack*MAXSTTHITSINTRACK +i1] == i ){
2887  flaggo=false;
2888  break;
2889  }
2890  }
2891  if(flaggo){
2892  fprintf(MACRO,
2893  "TEllipse* spurioSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nspurioSkew%d_%d->SetFillStyle(0);\n",
2894  i,ii,POINTS1[j+2],Rr*fi1,Aellipsis1,Rr*Bellipsis1,rotation1,i,ii);
2895  fprintf(MACRO,"spurioSkew%d_%d->SetLineColor(2);\n",i,ii);
2896  fprintf(MACRO,"spurioSkew%d_%d->Draw();\n",i,ii);
2897  }else {
2898  fprintf(MACRO,"TEllipse* Skew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nSkew%d_%d->SetFillStyle(0);\n",
2899  i,ii,POINTS1[j+2],Rr*fi1,Aellipsis1,Rr*Bellipsis1,rotation1,i,ii);
2900  fprintf(MACRO,"Skew%d_%d->Draw();\n",i,ii);
2901  }
2902 
2903  index++;
2904 
2905  } // end of for( ii=0; ii<2; ii++)
2906 
2907  } // end of for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++)
2908 
2909 
2910 
2911 //------ aggiungo in blu eventuali punti della traccia MC che sono non mecciati
2912 
2913  for( iii=0; iii< nMCSkewAlone; iii++) {
2914  i = MCSkewAloneList[iTrack*In_Put.nSttHit+iii];
2915  aaa = sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2916  vx1 = WDX[i]/aaa;
2917  vy1 = WDY[i]/aaa;
2918  vz1 = WDZ[i]/aaa;
2919 
2920 
2921  C0x1 = info[i*7+0];
2922  C0y1 = info[i*7+1];
2923  C0z1 = info[i*7+2];
2924  GeoCalculator.calculateintersections(Oxx,Oyy,Rr,C0x1,C0y1,C0z1,info[i*7+3],
2925  vx1,vy1,vz1,
2926  &STATUS,POINTS1);
2927 
2928  if(STATUS < 0 ) continue ;
2929 
2930 
2931  for( ii=0; ii<2; ii++){
2932  j=3*ii;
2933  dist[ii] = sqrt(
2934  (POINTS1[j]-C0x1)*(POINTS1[j]-C0x1) +
2935  (POINTS1[1+j]-C0y1)*(POINTS1[1+j]-C0y1) +
2936  (POINTS1[2+j]-C0z1)*(POINTS1[2+j]-C0z1)
2937  );
2938  }
2939  if(dist[0]>dist[1]) ii=1; else ii=0;
2940 
2941  distance = dist[ii];
2942 
2943 
2944  j=3*ii;
2945 
2946  Rx = POINTS1[j]-Oxx ; // x component Radial vector of cylinder of trajectory
2947  Ry = POINTS1[1+j]-Oyy ; // y direction Radial vector of cylinder of trajectory
2948 
2949  aaa = sqrt(Rx*Rx+Ry*Ry);
2950  SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2951  SkewInclWithRespectToS /= Rr;
2952  bbb = sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2953  // the tilt direction of this ellipse is (1,0) when major axis along Z direction
2954  if( bbb > 1.e-10){
2955  Tiltdirection1[0] = vz1/bbb;
2956  Tiltdirection1[1] = SkewInclWithRespectToS/bbb;
2957  } else {
2958  Tiltdirection1[0] = 1.;
2959  Tiltdirection1[1] = 0.;
2960  }
2961 
2962  LL = fabs(vx1*Rx + vy1*Ry);
2963  if( LL < 1.e-10) continue;
2964  Aellipsis1 = info[i*7+3]*aaa/LL;
2965 
2966  Bellipsis1 = info[i*7+3]/Rr;
2967 //--------------------------
2968  fi1 = atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ; // atan2 returns radians in (-pi and +pi]
2969  if( fi1 < 0.) fi1 += 2.*PI;
2970 
2971  if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2972  if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2973 
2974  if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2975  if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2976 
2977 
2978  Double_t rotation1 = 180.*atan2(Tiltdirection1[1],Tiltdirection1[0])/PI;
2979  fprintf(MACRO,"TEllipse* AloneSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nAloneSkew%d_%d->SetFillStyle(0);\n",
2980 // i,ii,POINTS1[j+2],fi1,Aellipsis1,Bellipsis1,rotation1,i,ii);
2981  i,ii,POINTS1[j+2],Rr*fi1,Aellipsis1,Rr*Bellipsis1,rotation1,i,ii);
2982 
2983 // ------ marca lo hit in blu
2984  fprintf(MACRO,"AloneSkew%d_%d->SetLineColor(4);\n",i,ii);
2985  fprintf(MACRO,"AloneSkew%d_%d->Draw();\n",i,ii);
2986 
2987  index++;
2988 
2989 
2990  } // end of for( iii=0; iii< nMCSkewAlone; iii++)
2991 
2992 //-------------------------------
2993 //------ fine aggiunta in blu eventuali punti della traccia MC che sono non mecciati
2994 
2995 // ora la parte delle Mvd
2996 
2997 // prima i pixel
2998 
2999  for(i=0; i<nPixelHitsinTrack[iTrack];i++){
3000  ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+i];
3001  if( zmin > ZMvdPixel[ ii ] )
3002  zmin = ZMvdPixel[ ii ];
3003  if( zmax < ZMvdPixel[ii ] )
3004  zmax = ZMvdPixel[ii ];
3005 
3006  esse = atan2( YMvdPixel[ ii ]-Oyy,
3007  XMvdPixel[ ii ]-Oxx);
3008  if(esse<0.) esse +=2.*PI;
3009 
3010 
3011 
3012  if( Smin > esse ) Smin = esse;
3013  if( Smax < esse ) Smax = esse;
3014 
3015 
3016  bool flaggo=true;
3017  for( int k=0; k<nMvdPixelCommon;k++){
3018  if( MvdPixelCommonList[iTrack*MAXMVDPIXELHITSINTRACK+k]== ii){
3019  fprintf(MACRO,
3020  "TMarker* CommonPixel%d = new TMarker(%f,%f,%d);\nCommonPixel%d->SetMarkerColor(1);\n",
3021  ii,ZMvdPixel[ii],Rr*esse,26,ii);
3022  fprintf(MACRO,"CommonPixel%d->Draw();\n",ii);
3023  flaggo=false;
3024  break;
3025  }
3026  }
3027  if(flaggo){
3028  fprintf(MACRO,"TMarker* SpuriousPixel%d = new TMarker(%f,%f,%d);\nSpuriousPixel%d->SetMarkerColor(2);\n",
3029  ii,ZMvdPixel[ii],Rr*esse,26,ii);
3030  fprintf(MACRO,"SpuriousPixel%d->Draw();\n",ii);
3031  }
3032  }
3033 // poi le strip
3034 
3035  for(i=0; i<nStripHitsinTrack[iTrack];i++){
3036  ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+i];
3037  if( zmin > ZMvdStrip[ ii ] )
3038  zmin = ZMvdStrip[ ii ];
3039  if( zmax < ZMvdStrip[ii ] )
3040  zmax = ZMvdStrip[ii ];
3041 
3042  esse = atan2( YMvdStrip[ ii ]-Oyy,
3043  XMvdStrip[ ii ]-Oxx);
3044  if(esse<0.) esse +=2.*PI;
3045 
3046 
3047 
3048  if( Smin > esse ) Smin = esse;
3049  if( Smax < esse ) Smax = esse;
3050 
3051  bool flaggo=true;
3052  for( int k=0; k<nMvdStripCommon;k++){
3053  if( MvdStripCommonList[iTrack*MAXMVDSTRIPHITSINTRACK+k]== ii){
3054  fprintf(MACRO,"TMarker* CommonStrip%d = new TMarker(%f,%f,%d);\nCommonStrip%d->SetMarkerColor(1);\n",
3055  ii,ZMvdStrip[ii],Rr*esse,25,ii);
3056  fprintf(MACRO,"CommonStrip%d->Draw();\n",ii);
3057  flaggo=false;
3058  break;
3059  }
3060  }
3061  if(flaggo){
3062  fprintf(MACRO,"TMarker* SpuriousStrip%d = new TMarker(%f,%f,%d);\nSpuriousStrip%d->SetMarkerColor(2);\n",
3063  ii,ZMvdStrip[ii],Rr*esse,25,ii);
3064  fprintf(MACRO,"SpuriousStrip%d->Draw();\n",ii);
3065  }
3066 
3067 
3068  }
3069 
3070 
3071 // ora i pixel 'Alone'
3072  for(i=0; i<nMCMvdPixelAlone;i++){
3073 
3074  ii=MCMvdPixelAloneList[iTrack*In_Put.nMvdPixelHit+i];
3075  if( zmin > ZMvdPixel[ ii ] )
3076  zmin = ZMvdPixel[ ii ];
3077  if( zmax < ZMvdPixel[ii ] )
3078  zmax = ZMvdPixel[ii ];
3079 
3080  esse = atan2( YMvdPixel[ ii ]-Oyy,
3081  XMvdPixel[ ii ]-Oxx);
3082  if(esse<0.) esse +=2.*PI;
3083  if( Smin > esse ) Smin = esse;
3084  if( Smax < esse ) Smax = esse;
3085  fprintf(MACRO,"TMarker* AlonePixel%d = new TMarker(%f,%f,%d);\nAlonePixel%d->SetMarkerColor(4);\n",
3086  ii,ZMvdPixel[ii],Rr*esse,26,ii);
3087  fprintf(MACRO,"AlonePixel%d->Draw();\n",ii);
3088  }
3089 
3090 
3091 // ora le strip 'Alone'
3092 
3093  for(i=0; i<nMCMvdStripAlone;i++){
3094  ii=MCMvdStripAloneList[iTrack*In_Put.nMvdStripHit+i];
3095  if( zmin > ZMvdStrip[ ii ] )
3096  zmin = ZMvdStrip[ ii ];
3097  if( zmax < ZMvdStrip[ii ] )
3098  zmax = ZMvdStrip[ii ];
3099 
3100  esse = atan2( YMvdStrip[ ii ]-Oyy,
3101  XMvdStrip[ ii ]-Oxx);
3102  if(esse<0.) esse +=2.*PI;
3103  if( Smin > esse ) Smin = esse;
3104  if( Smax < esse ) Smax = esse;
3105 
3106  fprintf(MACRO,"TMarker* AloneStrip%d = new TMarker(%f,%f,%d);\nAloneStrip%d->SetMarkerColor(4);\n",
3107  ii,ZMvdStrip[ii],Rr*esse,25,ii);
3108  fprintf(MACRO,"AloneStrip%d->Draw();\n",ii);
3109 
3110  }
3111 
3112 
3113 
3114 
3115 // plot della traccia trovata dal finder
3116 
3117 
3118  zmin2=zmin;
3119  zmax2=zmax;
3120 
3121  bool flaggo=true;
3122  if( -KAPPA*charge>0.) { // Pz>0.
3123  if( zmax <0.) {
3124  cout<<"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3125  <<" e' inconsistente col proprio Pz, non plottata!\n";
3126  flaggo=false;
3127  } else {
3128  zmin = 0.;
3129  }
3130  } else { // Pz<0.
3131  if( zmin >0.) {
3132  cout<<"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3133  <<" e' inconsistente col proprio Pz, non plottata!\n";
3134  flaggo=false;
3135  } else{
3136  zmax = 0.;
3137  }
3138 
3139  }
3140 
3141  if(flaggo){
3142 
3143  if ( KAPPA >= 0.) {
3144  fmin = KAPPA*zmin + FI0;
3145  fmax = KAPPA*zmax + FI0;
3146  } else {
3147  fmax = KAPPA*zmin + FI0;
3148  fmin = KAPPA*zmax + FI0;
3149  }
3150  if( fmax>=0.) {
3151  Nmax = (int) (0.5*fmax/ PI);
3152  } else {
3153  Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3154  }
3155  if( fmin>=0.) {
3156  Nmin = (int) (0.5*fmin/ PI);
3157  } else {
3158  Nmin = ((int) (0.5*fmin/ PI) )-1;
3159  }
3160  if(fabs(KAPPA)<1.e-10) {
3161  cout<<"da WriteMacroSkewAssociatedHitswithMC, questa traccia Found da PR non plottata"
3162  <<" perche' ha fabs(KAPPA)<1.e-10.\n";
3163  } else {
3164  for(i=Nmin; i<= Nmax;i++){
3165  // offset = 2.*PI*i; // [R.K. 02/2017] unused variable?
3166  z1 = (i*2.*PI-FI0)/KAPPA;
3167  z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3168  fprintf(MACRO,
3169 "TLine* FOUND%d = new TLine(%f,%f,%f,%f);\nFOUND%d->SetLineColor(2);\nFOUND%d->Draw();\n",
3170  i-Nmin,z1,0.,z2, Rr*2.*PI,i-Nmin,i-Nmin);
3171 
3172  } // end of for(i=Nmin; i<= Nmax;++)
3173  } // end of if(fabs(KAPPA)<1.e-10)
3174 
3175  } // end of if(flaggo)
3176 
3177 
3178  zmin=zmin2;
3179  zmax=zmax2;
3180 
3181 
3182 //----------------- ora la traccia MC corrispondente a questa traccia Stt
3183 
3184 // for(imc=0; imc<nMCTracks ; imc++){
3185 // if(imc != daTrackFoundaTrackMC[ iTrack ]) continue;
3186  imc= daTrackFoundaTrackMC ;
3187 
3188  if( imc>-1 ) {
3189  Int_t icode ;
3190  Double_t Fifi, Kakka, o_x, o_y, Cx, Cy, Px, Py, carica ; // Dd,r_r, //[R.K. 01/2017] unused variable?
3191  PndMCTrack* pMC;
3192  pMC = (PndMCTrack*) fMCTrackArray->At(imc);
3193  if ( pMC ) {
3194  icode = pMC->GetPdgCode() ; // PDG code of track
3195  o_x = pMC->GetStartVertex().X(); // X of starting point track
3196  o_y = pMC->GetStartVertex().Y(); // Y of starting point track
3197  Px = pMC->GetMomentum().X();
3198  Py = pMC->GetMomentum().Y();
3199  aaa = sqrt( Px*Px + Py*Py);
3200  //r_r = aaa*1000./(BFIELD*CVEL); // R (cm) of Helix of track projected in XY plane; B = 2 Tesla //[R.K. 01/2017] unused variable?
3201  TParticlePDG *fParticle= fdbPDG->GetParticle(icode);
3202  if (icode>1000000000) carica = 1.;
3203  else carica = fParticle->Charge()/3. ; // charge of track
3204  if (fabs(carica)>=0.1 ){
3205  Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
3206  Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
3207  Fifi = atan2(Cy, Cx); // MC truth Fifi angle of circle of Helix trajectory
3208  if(Fifi<0.) Fifi += 2.*PI;
3209  if( fabs( pMC->GetMomentum().Z() )< 1.e-20) Kakka = 99999999.;
3210  else Kakka = -carica*0.001*BFIELD*CVEL/pMC->GetMomentum().Z();
3211  KAPPA=Kakka;
3212  FI0 = fmod(Fifi+ PI, 2.*PI);
3213  if ( KAPPA >= 0.) {
3214  fmin = KAPPA*zmin + FI0;
3215  fmax = KAPPA*zmax + FI0;
3216  } else {
3217  fmax = KAPPA*zmin + FI0;
3218  fmin = KAPPA*zmax + FI0;
3219  }
3220  if( fmax>=0.) {
3221  Nmax = (int) (0.5*fmax/ PI);
3222  } else {
3223  Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3224  }
3225  if( fmin>=0.) {
3226  Nmin = (int) (0.5*fmin/ PI);
3227  } else {
3228  Nmin = ((int) (0.5*fmin/ PI) )-1;
3229  }
3230 
3231  for(i=Nmin; i<= Nmax;i++){
3232  // offset = 2.*PI*i; // [R.K. 02/2017] unused variable?
3233  z1 = (i*2.*PI-FI0)/KAPPA;
3234  z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3235  fprintf(MACRO,"TLine* MC%d_%d = new TLine(%f,%f,%f,%f);\nMC%d_%d->SetLineColor(3);\nMC%d_%d->Draw();\n",
3236  imc,i-Nmin,z1,0.,z2,Rr* 2.*PI,imc,i-Nmin,imc,i-Nmin);
3237  } // end of for(i=Nmin; i<= Nmax;++)
3238 
3239  } // end of if (fabs(carica)>=0.1 )
3240  } // end of if ( pMC )
3241  } // end of if( imc>-1 )
3242 
3243 
3244 
3245  } // end of if( zmax >= zmin && Smax >= Smin )
3246 
3247  fprintf(MACRO,"}\n");
3248  fclose(MACRO);
3249 
3250  }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
const Double_t BFIELD
Int_t * fParticle
Definition: run_full.C:24
const Double_t PI
Double_t
void disegnaSciTilHit(int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
Definition: P4_F32vec4.h:117
const int MAXSTTHITSINTRACK
const Double_t CVEL
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
void calculateintersections(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t C0x, Double_t C0y, Double_t C0z, Double_t r, Double_t vx, Double_t vy, Double_t vz, Int_t *STATUS, Double_t *POINTS)
const Double_t DIMENSIONSCITIL
void PndTrkPlotMacros::WriteMacroSttParallelAssociatedHitsandMvdwithMC ( PndTrkPlotMacros_InputData  In_Put,
Double_t  Oxx,
Double_t  Oyy,
Double_t  Rr,
Double_t  primoangolo,
Double_t  ultimoangolo,
Short_t  Nhits,
int  iTrack,
int  iNome,
Short_t  daSttTrackaMCTrack,
Short_t  nMvdPixelHitsAssociatedToSttTra,
Short_t  nMvdStripHitsAssociatedToSttTra,
Short_t  nSkewHitsinTrack 
)

Definition at line 3262 of file PndTrkPlotMacros.cxx.

References PndTrkPlotMacros_InputData::apotemamaxinnerparstraw, APOTEMAMAXINNERPARSTRAW, PndTrkPlotMacros_InputData::apotemamaxskewstraw, APOTEMAMAXSKEWSTRAW, PndTrkPlotMacros_InputData::apotemaminouterparstraw, APOTEMAMINOUTERPARSTRAW, PndTrkPlotMacros_InputData::apotemaminskewstraw, APOTEMAMINSKEWSTRAW, Vec< T >::at(), PndTrkPlotMacros_InputData::bfield, BFIELD, PndTrkPlotMacros_InputData::Charge, cos(), PndTrkPlotMacros_InputData::cvel, CVEL, PndTrkPlotMacros_InputData::daTrackFoundaTrackMC, PndTrkPlotMacros_InputData::dimensionscitil, DIMENSIONSCITIL, Double_t, fabs(), PndTrkPlotMacros_InputData::FI0, PndTrkPlotMacros_InputData::fMCTrackArray, fParticle, PndMCTrack::GetMomentum(), PndMCTrack::GetPdgCode(), PndMCTrack::GetStartVertex(), i, PndTrkPlotMacros_InputData::InclusionListSciTil, PndTrkPlotMacros_InputData::InclusionListStt, PndTrkPlotMacros_InputData::info, PndTrkPlotMacros_InputData::IVOLTE, PndTrkPlotMacros_InputData::KAPPA, PndTrkPlotMacros_InputData::keepit, PndTrkPlotMacros_InputData::ListMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::ListMvdStripHitsinTrack, PndTrkPlotMacros_InputData::ListSciTilHitsinTrack, PndTrkPlotMacros_InputData::ListSttParHitsinTrack, PndTrkPlotMacros_InputData::ListSttSkewHitsinTrack, PndTrkPlotMacros_InputData::ListTrackCandHit, PndTrkPlotMacros_InputData::ListTrackCandHitType, PndTrkPlotMacros_InputData::MAXMVDPIXELHITS, PndTrkPlotMacros_InputData::MAXMVDPIXELHITSINTRACK, PndTrkPlotMacros_InputData::MAXMVDSTRIPHITS, PndTrkPlotMacros_InputData::MAXMVDSTRIPHITSINTRACK, PndTrkPlotMacros_InputData::MAXSCITILHITS, PndTrkPlotMacros_InputData::MAXSCITILHITSINTRACK, PndTrkPlotMacros_InputData::MAXSTTHITS, PndTrkPlotMacros_InputData::MAXSTTHITSINTRACK, MAXSTTHITSINTRACK, PndTrkPlotMacros_InputData::MAXTRACKSPEREVENT, PndTrkPlotMacros_InputData::MCMvdPixelAloneList, PndTrkPlotMacros_InputData::MCMvdStripAloneList, PndTrkPlotMacros_InputData::MCParalAloneList, PndTrkPlotMacros_InputData::MCSciTilAloneList, PndTrkPlotMacros_InputData::MCSkewAloneList, PndTrkPlotMacros_InputData::MCSkewAloneX, PndTrkPlotMacros_InputData::MCSkewAloneY, PndTrkPlotMacros_InputData::MvdPixelCommonList, PndTrkPlotMacros_InputData::MvdPixelSpuriList, PndTrkPlotMacros_InputData::MvdStripCommonList, PndTrkPlotMacros_InputData::MvdStripSpuriList, PndTrkPlotMacros_InputData::nMCMvdPixelAlone, PndTrkPlotMacros_InputData::nMCMvdStripAlone, PndTrkPlotMacros_InputData::nMCParalAlone, PndTrkPlotMacros_InputData::nMCSciTilAlone, PndTrkPlotMacros_InputData::nMCSkewAlone, PndTrkPlotMacros_InputData::nMvdPixelCommon, PndTrkPlotMacros_InputData::nMvdPixelHit, PndTrkPlotMacros_InputData::nMvdPixelHitsinTrack, PndTrkPlotMacros_InputData::nMvdPixelSpuriinTrack, PndTrkPlotMacros_InputData::nMvdStripCommon, PndTrkPlotMacros_InputData::nMvdStripHit, PndTrkPlotMacros_InputData::nMvdStripHitsinTrack, PndTrkPlotMacros_InputData::nMvdStripSpuriinTrack, PndTrkPlotMacros_InputData::nParalCommon, PndTrkPlotMacros_InputData::nSciTilCommon, PndTrkPlotMacros_InputData::nSciTilHits, PndTrkPlotMacros_InputData::nSciTilHitsinTrack, PndTrkPlotMacros_InputData::nSciTilSpuriinTrack, PndTrkPlotMacros_InputData::nSkewCommon, PndTrkPlotMacros_InputData::nSpuriParinTrack, PndTrkPlotMacros_InputData::nSttHit, PndTrkPlotMacros_InputData::nSttParHitsinTrack, PndTrkPlotMacros_InputData::nSttSkewHitsinTrack, PndTrkPlotMacros_InputData::nTotalCandidates, PndTrkPlotMacros_InputData::nTrackCandHit, PndTrkPlotMacros_InputData::Ox, PndTrkPlotMacros_InputData::Oy, PndTrkPlotMacros_InputData::ParalCommonList, PndTrkPlotMacros_InputData::ParSpuriList, PndTrkPlotMacros_InputData::posizSciTil, R, PndTrkPlotMacros_InputData::R, PndTrkPlotMacros_InputData::rstrawdetectormax, RSTRAWDETECTORMAX, PndTrkPlotMacros_InputData::rstrawdetectormin, PndTrkPlotMacros_InputData::SchosenSkew, PndTrkPlotMacros_InputData::SciTilCommonList, PndTrkPlotMacros_InputData::SciTilSpuriList, PndTrkPlotMacros_InputData::sigmaXMvdPixel, PndTrkPlotMacros_InputData::sigmaXMvdStrip, PndTrkPlotMacros_InputData::sigmaYMvdPixel, PndTrkPlotMacros_InputData::sigmaYMvdStrip, sin(), PndTrkPlotMacros_InputData::SkewCommonList, sqrt(), VERTICALGAP, PndTrkPlotMacros_InputData::verticalgap, PndTrkPlotMacros_InputData::WDX, PndTrkPlotMacros_InputData::WDY, PndTrkPlotMacros_InputData::WDZ, xmax, xmin, PndTrkPlotMacros_InputData::XMvdPixel, PndTrkPlotMacros_InputData::XMvdStrip, PndTrkPlotMacros_InputData::YMvdPixel, PndTrkPlotMacros_InputData::YMvdStrip, PndTrkPlotMacros_InputData::ZMvdPixel, and PndTrkPlotMacros_InputData::ZMvdStrip.

3277 {
3278 // fine cambio_in_perl;
3279 
3280  Int_t i, j, ii; //, i1, index, Kincl, nlow, nup, STATUS; //[R.K. 01/2017] unused variable?
3281 
3282  Double_t xmin , xmax, ymin, ymax,
3283  //dx, dy, diff, d1, d2, //[R.K. 01/2017] unused variable?
3284  //delta, deltax, deltay, deltaz, deltaS, //[R.K. 01/2017] unused variable?
3285  //factor, //[R.K. 01/2017] unused variable?
3286  //zmin, zmax, Smin, Smax, S1, S2, //[R.K. 01/2017] unused variable?
3287  //y1, y2,x1,x2, //z1, z2, //[R.K. 01/2017] unused variable?
3288  //vx1, vy1, vz1, C0x1, C0y1, C0z1, //[R.K. 01/2017] unused variable?
3289  aaa, bbb;// ccc, angle, minor, major, //[R.K. 01/2017] unused variable?
3290  //distance, Rx, Ry, LL, //[R.K. 01/2017] unused variable?
3291  //Aellipsis1, Bellipsis1,fi1, //[R.K. 01/2017] unused variable?
3292  //fmin, fmax, offset, step, //[R.K. 01/2017] unused variable?
3293  //SkewInclWithRespectToS, zpos, zpos1, zpos2, //[R.K. 01/2017] unused variable?
3294  //Tiltdirection1[2], //[R.K. 01/2017] unused variable?
3295  //zl[200],zu[200], //[R.K. 01/2017] unused variable?
3296  //POINTS1[6]; //[R.K. 01/2017] unused variable?
3297 
3298 // istruzione per perl : da qui non usare cambia_cxx ;
3299 
3300 // conversioni in variabili locali;
3301 
3302  //int MAXMCTRACKS = In_Put.MAXMCTRACKS; //[R.K. 01/2017] unused variable?
3303  //int MAXMVDPIXELHITS = In_Put.MAXMVDPIXELHITS; //[R.K. 01/2017] unused variable?
3304  int MAXMVDPIXELHITSINTRACK = In_Put.MAXMVDPIXELHITSINTRACK;
3305  //int MAXMVDSTRIPHITS = In_Put.MAXMVDSTRIPHITS; //[R.K. 01/2017] unused variable?
3306  //int MAXMVDSTRIPHITSINTRACK = In_Put.MAXMVDSTRIPHITSINTRACK; //[R.K. 01/2017] unused variable?
3307  //int MAXSCITILHITS = In_Put.MAXSCITILHITS; //[R.K. 01/2017] unused variable?
3308  int MAXSCITILHITSINTRACK = In_Put.MAXSCITILHITSINTRACK;
3309  int MAXSTTHITS = In_Put.MAXSTTHITS;
3310  int MAXSTTHITSINTRACK = In_Put.MAXSTTHITSINTRACK;
3311  //int MAXTRACKSPEREVENT = In_Put.MAXTRACKSPEREVENT; //[R.K. 01/2017] unused variable?
3312  //int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
3313  //MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK; //[R.K. 01/2017] unused variable?
3314 
3319  Double_t BFIELD = In_Put.bfield;
3320 
3321  Vec<Short_t> Charge(In_Put.Charge,In_Put.MAXTRACKSPEREVENT,"Charge");
3322 
3323  Double_t CVEL = In_Put.cvel;
3324  Vec<Short_t> daTrackFoundaTrackMC(In_Put.daTrackFoundaTrackMC,In_Put.MAXTRACKSPEREVENT,
3325  "daTrackFoundaTrackMC") ;
3327  //bool doMcComparison = In_Put.doMcComparison; //[R.K. 01/2017] unused variable?
3328  Vec<Double_t> FI0(In_Put.FI0,In_Put.MAXTRACKSPEREVENT,"FI0") ;
3329  TClonesArray *fMCTrackArray = In_Put.fMCTrackArray;
3330  //TClonesArray *fSttPointArray = In_Put.fSttPointArray; //[R.K. 01/2017] unused variable?
3331 
3332  Vec<Double_t> info(In_Put.info,In_Put.MAXSTTHITS*7,"info") ; // dimensione originale : [MAXSTTHITS][7];
3333 
3334  Vec<bool> InclusionListSciTil(In_Put.InclusionListSciTil,In_Put.MAXSCITILHITS,"InclusionListSciTil") ;
3335  Vec<bool> InclusionListStt(In_Put.InclusionListStt,In_Put.MAXSTTHITS,"InclusionListStt") ;
3336  int IVOLTE = In_Put.IVOLTE;
3337  Vec<Double_t> KAPPA(In_Put.KAPPA,In_Put.MAXTRACKSPEREVENT,"KAPPA") ;
3338  Vec<bool> keepit(In_Put.keepit,In_Put.MAXTRACKSPEREVENT,"keepit") ;
3339  //int istampa = In_Put.istampa; //[R.K. 01/2017] unused variable?
3340 
3341  Vec<Short_t> ListMvdPixelHitsinTrack(In_Put.ListMvdPixelHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXMVDPIXELHITSINTRACK,"ListMvdPixelHitsinTrack") ;
3342 
3343 
3344  Vec<Short_t> ListMvdStripHitsinTrack(In_Put.ListMvdStripHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXMVDSTRIPHITSINTRACK,"ListMvdStripHitsinTrack") ;
3345 
3346 
3347  Vec<Short_t> ListSciTilHitsinTrack(In_Put.ListSciTilHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSCITILHITSINTRACK,"ListSciTilHitsinTrack") ;
3348 
3349 
3350  Vec<Short_t> ListSttParHitsinTrack(In_Put.ListSttParHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ListSttParHitsinTrack") ;
3351 
3352 
3353  Vec<Short_t> ListSttSkewHitsinTrack(In_Put.ListSttSkewHitsinTrack,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ListSttSkewHitsinTrack") ;
3354 
3355 
3356  Vec<Short_t> ListTrackCandHit(In_Put.ListTrackCandHit,
3357  In_Put.MAXTRACKSPEREVENT + In_Put.MAXSTTHITSINTRACK
3359  In_Put.MAXSCITILHITSINTRACK,"ListTrackCandHit") ;
3360 
3361  Vec<Short_t>ListTrackCandHitType(In_Put.ListTrackCandHitType,
3362  In_Put.MAXTRACKSPEREVENT + In_Put.MAXSTTHITSINTRACK
3364  In_Put.MAXSCITILHITSINTRACK,"ListTrackCandHitType") ;
3365 
3366 
3367  Vec<Short_t> MCMvdPixelAloneList(In_Put.MCMvdPixelAloneList,In_Put.nTotalCandidates*In_Put.nMvdPixelHit,"MCMvdPixelAloneList") ;
3368 
3369 
3370  Vec<Short_t> MCMvdStripAloneList(In_Put.MCMvdStripAloneList,In_Put.nTotalCandidates*In_Put.nMvdStripHit,"MCMvdStripAloneList") ;
3371 
3372 
3373  Vec<Short_t> MCParalAloneList(In_Put.MCParalAloneList,In_Put.MAXTRACKSPEREVENT*In_Put.nSttHit,"MCParalAloneList") ;
3374 
3375 
3376  Vec<Short_t> MCSkewAloneList(In_Put.MCSkewAloneList,In_Put.MAXTRACKSPEREVENT*In_Put.nSttHit,"MCSkewAloneList") ;
3377 
3378 
3379  Vec<Double_t> MCSkewAloneX(In_Put.MCSkewAloneX,In_Put.MAXSTTHITS,"MCSkewAloneX") ;
3380  Vec<Double_t> MCSkewAloneY(In_Put.MCSkewAloneY,In_Put.MAXSTTHITS,"MCSkewAloneY") ;
3381 
3382  Vec<Short_t> MvdPixelCommonList(In_Put.MvdPixelCommonList,In_Put.nTotalCandidates*In_Put.MAXMVDPIXELHITSINTRACK,"MvdPixelCommonList") ;
3383 
3384 
3385  Vec<Short_t> MvdPixelSpuriList(In_Put.MvdPixelSpuriList,In_Put.nTotalCandidates*In_Put.MAXMVDPIXELHITSINTRACK,"MvdPixelSpuriList") ;
3386 
3387 
3388  Vec<Short_t> MvdStripCommonList(In_Put.MvdStripCommonList,In_Put.nTotalCandidates*In_Put.MAXMVDSTRIPHITSINTRACK,"MvdStripCommonList") ;
3389 
3390 
3391  Vec<Short_t> MvdStripSpuriList(In_Put.MvdStripSpuriList,In_Put.nTotalCandidates*In_Put.MAXMVDSTRIPHITSINTRACK,"MvdStripSpuriList") ;
3392 
3393  Vec<Short_t> nMCMvdPixelAlone(In_Put.nMCMvdPixelAlone,In_Put.nTotalCandidates,"nMCMvdPixelAlone") ;
3394  Vec<Short_t> nMCMvdStripAlone(In_Put.nMCMvdStripAlone,In_Put.nTotalCandidates,"nMCMvdStripAlone") ;
3395 
3396  Vec<Short_t> nMCParalAlone(In_Put.nMCParalAlone,In_Put.MAXTRACKSPEREVENT,"nMCParalAlone") ;
3397  Vec<Short_t> nMCSkewAlone(In_Put.nMCSkewAlone,In_Put.MAXTRACKSPEREVENT,"nMCSkewAlone") ;
3398 
3399  //Short_t nMCTracks = In_Put.nMCTracks; //[R.K. 01/2017] unused variable?
3400 
3401  Vec<Short_t> nMvdPixelCommon(In_Put.nMvdPixelCommon,In_Put.nTotalCandidates,"nMvdPixelCommon") ;
3402  //Short_t nMvdPixelHit = In_Put.nMvdPixelHit; //[R.K. 01/2017] unused variable?
3403  Vec<Short_t> nMvdPixelHitsinTrack(In_Put.nMvdPixelHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdPixelHitsinTrack") ;
3404  Vec<Short_t> nMvdPixelSpuriinTrack(In_Put.nMvdPixelSpuriinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdPixelSpuriinTrack") ;
3405 
3406  Vec<Short_t> nMvdStripCommon(In_Put.nMvdStripCommon,In_Put.nTotalCandidates,"nMvdStripCommon") ;
3407  //Short_t nMvdStripHit = In_Put.nMvdStripHit; //[R.K. 01/2017] unused variable?
3408  Vec<Short_t> nMvdStripHitsinTrack(In_Put.nMvdStripHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nMvdStripHitsinTrack") ;
3409  Vec<Short_t> nMvdStripSpuriinTrack(In_Put.nMvdStripSpuriinTrack,In_Put.nTotalCandidates,"nMvdStripSpuriinTrack") ;
3410 
3411 
3412  Vec<Short_t> nParalCommon(In_Put.nParalCommon,In_Put.MAXTRACKSPEREVENT,"nParalCommon") ;
3413 
3414  //Short_t nSciTilHits = In_Put.nSciTilHits; //[R.K. 01/2017] unused variable?
3415 
3416  Vec<Short_t> nSciTilHitsinTrack(In_Put.nSciTilHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSciTilHitsinTrack") ;
3417 
3418  Vec<Short_t> nSkewCommon(In_Put.nSkewCommon,In_Put.MAXTRACKSPEREVENT,"nSkewCommon") ;
3419 
3420  Vec<Short_t> nSpuriParinTrack(In_Put.nSpuriParinTrack,In_Put.MAXTRACKSPEREVENT,"nSpuriParinTrack") ;
3421 
3422  //Int_t nSttHit = In_Put.nSttHit; //[R.K. 01/2017] unused variable?
3423  //Int_t nSttParHit = In_Put.nSttParHit; //[R.K. 01/2017] unused variable?
3424  Vec<Short_t> nSttParHitsinTrack(In_Put.nSttParHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSttParHitsinTrack") ;
3425  //Int_t nSttSkewHit = In_Put.nSttSkewHit; //[R.K. 01/2017] unused variable?
3426  Vec<Short_t> nSttSkewHitsinTrack(In_Put.nSttSkewHitsinTrack,In_Put.MAXTRACKSPEREVENT,"nSttSkewHitsinTrack") ;
3427 
3428  //Short_t nTotalCandidates = In_Put.nTotalCandidates; //[R.K. 01/2017] unused variable?
3429  Vec<Short_t> nTrackCandHit(In_Put.nTrackCandHit,In_Put.MAXTRACKSPEREVENT,"nTrackCandHit") ;
3430 
3431  Vec<Double_t> Ox(In_Put.Ox,In_Put.MAXTRACKSPEREVENT,"Ox") ;
3432  Vec<Double_t> Oy(In_Put.Oy,In_Put.MAXTRACKSPEREVENT,"Oy") ;
3433 
3434  Vec<Short_t> ParalCommonList(In_Put.ParalCommonList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ParalCommonList") ;
3435 
3436 
3437  Vec<Short_t> ParSpuriList(In_Put.ParSpuriList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"ParSpuriList") ;
3438 
3439 
3440  // dimensione originale : [MAXSCITILHITS][3];
3441  Vec<Double_t> posizSciTil(In_Put.posizSciTil,In_Put.MAXSCITILHITS*3,"posizSciTil") ;
3442 
3443 
3444  Vec<Double_t> R(In_Put.R,In_Put.MAXTRACKSPEREVENT,"R") ;
3445 
3447  Double_t RSTRAWDETECTORMIN = In_Put.rstrawdetectormin;
3448 
3449  Vec<Double_t> sigmaXMvdPixel(In_Put.sigmaXMvdPixel,In_Put.MAXMVDPIXELHITS,"sigmaXMvdPixel") ;
3450  Vec<Double_t> sigmaXMvdStrip(In_Put.sigmaXMvdStrip,In_Put.MAXMVDSTRIPHITS,"sigmaXMvdStrip") ;
3451  Vec<Double_t> sigmaYMvdPixel(In_Put.sigmaYMvdPixel,In_Put.MAXMVDPIXELHITS,"sigmaYMvdPixel") ;
3452  Vec<Double_t> sigmaYMvdStrip(In_Put.sigmaYMvdStrip,In_Put.MAXMVDSTRIPHITS,"sigmaYMvdStrip") ;
3453 
3454  Vec<Double_t> SchosenSkew(In_Put.SchosenSkew,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITS,"SchosenSkew") ;
3455 
3456  Vec<Short_t> SkewCommonList(In_Put.SkewCommonList,In_Put.MAXTRACKSPEREVENT*In_Put.MAXSTTHITSINTRACK,"SkewCommonList") ;
3457 
3458  Double_t VERTICALGAP = In_Put.verticalgap;
3459  Vec<Double_t> XMvdPixel(In_Put.XMvdPixel,In_Put.MAXMVDPIXELHITS,"XMvdPixel") ;
3460  Vec<Double_t> XMvdStrip(In_Put.XMvdStrip,In_Put.MAXMVDSTRIPHITS,"XMvdStrip") ;
3461  Vec<Double_t> YMvdPixel(In_Put.YMvdPixel,In_Put.MAXMVDPIXELHITS,"YMvdPixel") ;
3462  Vec<Double_t> YMvdStrip(In_Put.YMvdStrip,In_Put.MAXMVDSTRIPHITS,"YMvdStrip") ;
3463  Vec<Double_t> WDX(In_Put.WDX,In_Put.MAXSTTHITS,"WDX") ;
3464  Vec<Double_t> WDY(In_Put.WDY,In_Put.MAXSTTHITS,"WDY") ;
3465  Vec<Double_t> WDZ(In_Put.WDZ,In_Put.MAXSTTHITS,"WDZ") ;
3466  Vec<Double_t> ZMvdPixel(In_Put.ZMvdPixel,In_Put.MAXMVDPIXELHITS,"ZMvdPixel") ;
3467  Vec<Double_t> ZMvdStrip(In_Put.ZMvdStrip,In_Put.MAXMVDSTRIPHITS,"ZMvdStrip") ;
3468 
3469 // istruzione per perl : da qui usa cambia_cxx ;
3470 
3471 //---------- parallel straws Macro now
3472  char nome[300], nome2[300];
3473  sprintf(nome,"MacroSttMvdXYwithMCEvent%dT%d", IVOLTE,iNome);
3474  sprintf(nome2,"%s.C",nome);
3475  FILE * MACRO = fopen(nome2,"w");
3476  fprintf(MACRO,"{\n");
3477 
3478 
3479  xmin=-1.3*RSTRAWDETECTORMAX;
3480  xmax=1.3*RSTRAWDETECTORMAX;
3481  ymin=-1.3*RSTRAWDETECTORMAX;
3482  ymax=1.3*RSTRAWDETECTORMAX;
3483 
3484 
3485 
3486  fprintf(MACRO,"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
3487  xmin,ymin,xmax,ymax);
3488 
3489 
3490 // disegna il BiHexagon destro e sinistro delle inner parallel straws.
3491 
3492  char myname[100];
3493 
3494  sprintf(myname, "InnerPar");
3496  VERTICALGAP,
3497  MACRO,
3498  RSTRAWDETECTORMIN,
3499  APOTEMAMAXINNERPARSTRAW,
3500  4, // color code, 4= blue.
3501  myname
3502  );
3503 //--------------
3504 // disegna il BiHexagon destro e sinistro delle skew straws.
3505  sprintf(myname, "Skew");
3507  VERTICALGAP,
3508  MACRO,
3509  APOTEMAMINSKEWSTRAW,
3510  APOTEMAMAXSKEWSTRAW,
3511  2, // color code.
3512  myname
3513  );
3514 //--------------
3515 // disegna il BiHexagon destro e sinistro delle skew straws.
3516  sprintf(myname, "OuterPar");
3518  VERTICALGAP,
3519  MACRO,
3520  APOTEMAMINOUTERPARSTRAW,
3521  RSTRAWDETECTORMAX,
3522  4, // color code.
3523  myname
3524  );
3525 //--------------
3526 
3527 //---- disegna gli Scitil.
3528 
3529  // prima la lista di SciTil 'common' :
3530  for(i=0;i<In_Put.nSciTilCommon[iTrack];i++){
3531  j=In_Put.SciTilCommonList[iTrack*MAXSCITILHITSINTRACK+i];
3533  1, // color code; the same as in SetColor of root;
3534  DIMENSIONSCITIL,
3535  MACRO,
3536  posizSciTil.at(j*3+0),
3537  posizSciTil.at(j*3+1),
3538  j,
3539  0 // if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
3540  // SciTil draw in UV.
3541  );
3542  }
3543  // poi la lista di SciTil 'spuri' :
3544  for(i=0;i<In_Put.nSciTilSpuriinTrack[iTrack];i++){
3545  j=In_Put.SciTilSpuriList[iTrack*MAXSCITILHITSINTRACK+i];
3547  2, // color code; the same as in SetColor of root;
3548  DIMENSIONSCITIL,
3549  MACRO,
3550  posizSciTil.at(j*3+0),
3551  posizSciTil.at(j*3+1),
3552  j,
3553  0 // if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
3554  // SciTil draw in UV.
3555  );
3556  }
3557  // poi la lista di SciTil 'alone' :
3558  for(i=0;i<In_Put.nMCSciTilAlone[iTrack];i++){
3559  j=In_Put.MCSciTilAloneList[iTrack*In_Put.nSciTilHits+i];
3561  4, // color code; the same as in SetColor of root;
3562  DIMENSIONSCITIL,
3563  MACRO,
3564  posizSciTil.at(j*3+0),
3565  posizSciTil.at(j*3+1),
3566  j,
3567  0 // if 0 then SciTil draw in XY; if 1 then SciTil draw in SZ; else
3568  // SciTil draw in UV.
3569  );
3570  }
3571 
3572 // --------------------------------
3573 
3574 
3575 
3576  fprintf(MACRO,"TEllipse* FoundTrack = new TEllipse(%f,%f,%f,%f,%f,%f);\n"
3577  ,Oxx,Oyy,Rr,Rr,primoangolo,ultimoangolo);
3578 
3579  fprintf(MACRO,
3580  "FoundTrack->SetLineColor(2);\nFoundTrack->SetFillStyle(0);\nFoundTrack->Draw(\"only\");\n");
3581 
3582 
3583  disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
3584 
3585 
3586 
3587 
3588 //------------- hits paralleli in comune con traccia MC
3589  for( ii=0; ii< nParalCommon.at(iTrack); ii++) {
3590  i = ParalCommonList.at(iTrack*MAXSTTHITSINTRACK+ii) ;
3591  fprintf(MACRO,
3592  "TEllipse* CommonParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nCommonParalHit%d->SetFillStyle(0);\nCommonParalHit%d->Draw();\n",
3593  i,info[i*7+0],info.at(i*7+1),info.at(i*7+3),info.at(i*7+3),i,i);
3594  }
3595 //------------- hits paralleli spuri
3596  for( ii=0; ii< nSpuriParinTrack.at(iTrack); ii++) {
3597  i = ParSpuriList.at(iTrack*MAXSTTHITSINTRACK+ii) ;
3598  fprintf(MACRO,
3599  "TEllipse* SpurParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nSpurParalHit%d->SetFillStyle(0);\nSpurParalHit%d->SetLineColor(2);\nSpurParalHit%d->Draw();\n",
3600  i,info[i*7+0],info.at(i*7+1),info.at(i*7+3),info.at(i*7+3),i,i,i);
3601  }
3602 //------------- hits paralleli MC 'alone'
3603  for( ii=0; ii< nMCParalAlone.at(iTrack); ii++) {
3604  i = MCParalAloneList.at(iTrack*In_Put.nSttHit+ii) ;
3605  fprintf(MACRO,
3606  "TEllipse* AloneParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nAloneParalHit%d->SetFillStyle(0);\nAloneParalHit%d->SetLineColor(4);\nAloneParalHit%d->Draw();\n",
3607  i,info[i*7+0],info.at(i*7+1),info.at(i*7+3),info.at(i*7+3),i,i,i);
3608  }
3609 
3610 //-------------
3611 //------------- hits skew in comune e spuri di traccia MC
3612 
3613  for( i=0; i< nSkewHitsinTrack; i++) {
3614  ii = ListSttSkewHitsinTrack.at(iTrack*MAXSTTHITSINTRACK+i);
3615  aaa=Oxx+Rr*cos(SchosenSkew.at(iTrack*MAXSTTHITS+ii));
3616  bbb=Oyy+Rr*sin(SchosenSkew.at(iTrack*MAXSTTHITS+ii));
3617  bool flaggo = true;
3618  for( int k=0; k<nSkewCommon.at(iTrack);k++){
3619  if( SkewCommonList.at(iTrack*MAXSTTHITSINTRACK+k)== ii){
3620  fprintf(MACRO,"TMarker* CommonSkewHit%d = new TMarker(%f,%f,%d);\n",
3621  ii,aaa,bbb,28);
3622  fprintf(MACRO,"CommonSkewHit%d->SetMarkerColor(1);\nCommonSkewHit%d->Draw();\n"
3623  ,ii,ii);
3624  flaggo = false;
3625  break;
3626  }
3627  }
3628  if(flaggo){
3629  fprintf(MACRO,"TMarker* SpurSkewHit%d = new TMarker(%f,%f,%d);\n",
3630  ii,aaa,bbb,28);
3631  fprintf(MACRO,"SpurSkewHit%d->SetMarkerColor(2);\nSpurSkewHit%d->Draw();\n",ii,ii);
3632  }
3633 
3634  }
3635 //------------- hits paralleli MC 'alone'
3636  for( ii=0; ii< nMCSkewAlone.at(iTrack); ii++) {
3637  i = MCSkewAloneList.at(iTrack*In_Put.nSttHit+ii) ;
3638  fprintf(MACRO,
3639  "TMarker* AloneSkewHit%d = new TMarker(%f,%f,%d);\nAloneSkewHit%d->SetMarkerColor(4);\nAloneSkewHit%d->Draw();\n",
3640  i,MCSkewAloneX.at(i),MCSkewAloneY.at(i),28,i,i);
3641  }
3642 
3643 //------------- now the Strips
3644 
3645  for( i=0; i< nMvdStripHitsAssociatedToSttTra; i++) {
3646  ii = ListMvdStripHitsinTrack.at(iTrack*In_Put.MAXMVDSTRIPHITSINTRACK+i);
3647  //x1= XMvdStrip.at(ii)-sigmaXMvdStrip.at(ii); //[R.K. 9/2018] unused
3648  //x2= XMvdStrip.at(ii)+sigmaXMvdStrip.at(ii); //[R.K. 9/2018] unused
3649  //y1= YMvdStrip.at(ii)-sigmaYMvdStrip.at(ii); //[R.K. 9/2018] unused
3650  //y2= YMvdStrip.at(ii)+sigmaYMvdStrip.at(ii); //[R.K. 9/2018] unused
3651 
3652  bool flaggo=true;
3653  for( int k=0; k<nMvdStripCommon.at(iTrack);k++){
3654  if( MvdStripCommonList.at(iTrack*In_Put.MAXMVDSTRIPHITSINTRACK+k)== ii){
3655  fprintf(MACRO,"TMarker* CommonMvdStrip%d = new TMarker(%f,%f,%d);\n",
3656  ii,XMvdStrip.at(ii),YMvdStrip.at(ii),25);
3657  fprintf(MACRO,"CommonMvdStrip%d->SetMarkerColor(1);\nCommonMvdStrip%d->Draw();\n",
3658  ii,ii);
3659  flaggo=false;
3660  break;
3661  }
3662  }
3663  if(flaggo){
3664  fprintf(MACRO,"TMarker* SpurMvdStrip%d = new TMarker(%f,%f,%d);\n",
3665  ii,XMvdStrip.at(ii),YMvdStrip.at(ii),25);
3666  fprintf(MACRO,"SpurMvdStrip%d->SetMarkerColor(2);\nSpurMvdStrip%d->Draw();\n",ii,ii);
3667  }
3668 
3669 
3670  }
3671 
3672 //-------------- hit Mvd Strips 'Alone'
3673  for( ii=0; ii< nMCMvdStripAlone.at(iTrack); ii++) {
3674  i = MCMvdStripAloneList.at(iTrack*In_Put.nMvdStripHit+ii) ;
3675  fprintf(MACRO,
3676  "TMarker* AloneMvdStrip%d = new TMarker(%f,%f,%d);\nAloneMvdStrip%d->SetMarkerColor(4);\nAloneMvdStrip%d->Draw();\n",
3677  i,XMvdStrip.at(i),YMvdStrip.at(i),25,i,i);
3678  }
3679 //-------------
3680 
3681  for( i=0; i< nMvdPixelHitsAssociatedToSttTra; i++) {
3682  ii = ListMvdPixelHitsinTrack.at(iTrack*MAXMVDPIXELHITSINTRACK+i);
3683  //x1= XMvdPixel.at(ii)-sigmaXMvdPixel.at(ii); //[R.K. 9/2018] unused
3684  //x2= XMvdPixel.at(ii)+sigmaXMvdPixel.at(ii); //[R.K. 9/2018] unused
3685  //y1= YMvdPixel.at(ii)-sigmaYMvdPixel.at(ii); //[R.K. 9/2018] unused
3686  //y2= YMvdPixel.at(ii)+sigmaYMvdPixel.at(ii); //[R.K. 9/2018] unused
3687 
3688  bool flaggo=true;
3689  for( int k=0; k<nMvdPixelCommon.at(iTrack);k++){
3690 if( MvdPixelCommonList.at(iTrack*In_Put.MAXMVDPIXELHITSINTRACK+k)== ii){
3691  fprintf(MACRO,"TMarker* CommonMvdPixel%d = new TMarker(%f,%f,%d);\n",
3692  ii,XMvdPixel.at(ii),YMvdPixel.at(ii),26);
3693  fprintf(MACRO,"CommonMvdPixel%d->SetMarkerColor(1);\nCommonMvdPixel%d->Draw();\n",
3694  ii,ii);
3695  flaggo=false;
3696  break;
3697  }
3698  }
3699  if(flaggo){
3700  fprintf(MACRO,"TMarker* SpurMvdPixel%d = new TMarker(%f,%f,%d);\n",
3701  ii,XMvdPixel.at(ii),YMvdPixel.at(ii),26);
3702  fprintf(MACRO,"SpurMvdPixel%d->SetMarkerColor(2);\nSpurMvdPixel%d->Draw();\n",ii,ii);
3703  }
3704 
3705 
3706  }
3707 
3708 //-------------- hit Mvd Pixel 'Alone'
3709  for( ii=0; ii< nMCMvdPixelAlone.at(iTrack); ii++) {
3710  i = MCMvdPixelAloneList.at(iTrack*In_Put.nMvdPixelHit+ii) ;
3711  fprintf(MACRO,
3712  "TMarker* AloneMvdPixel%d = new TMarker(%f,%f,%d);\nAloneMvdPixel%d->SetMarkerColor(4);\nAloneMvdPixel%d->Draw();\n",
3713  i,XMvdPixel.at(i),YMvdPixel.at(i),26,i,i);
3714  }
3715 //-------------
3716 //----------------- ora la traccia MC corrispondente a questa traccia Stt
3717  if( daSttTrackaMCTrack>-1 ) {
3718  Int_t icode, im;
3719  Double_t r_r, o_x, o_y, Cx, Cy, Px, Py, carica ;// Dd, Fifi, //[R.K. 01/2017] unused variable?
3720  PndMCTrack* pMC;
3721  im=daSttTrackaMCTrack;
3722  pMC = (PndMCTrack*) fMCTrackArray->At(im);
3723  if ( pMC ) {
3724  icode = pMC->GetPdgCode() ; // PDG code of track
3725  o_x = pMC->GetStartVertex().X(); // X of starting point track
3726  o_y = pMC->GetStartVertex().Y(); // Y of starting point track
3727  Px = pMC->GetMomentum().X();
3728  Py = pMC->GetMomentum().Y();
3729  aaa = sqrt( Px*Px + Py*Py);
3730  r_r = aaa*1000./(BFIELD*CVEL); // R (cm) of Helix of track projected in XY plane; B = 2 Tesla
3731  TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
3732  TParticlePDG *fParticle= fdbPDG->GetParticle(icode);
3733  if (icode>1000000000) carica = 1.;
3734  else carica = fParticle->Charge()/3. ; // charge of track
3735  if (fabs(carica)>=0.1 ){
3736  Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
3737  Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
3738  fprintf(MACRO,
3739 "TEllipse* MC%d = new TEllipse(%f,%f,%f,%f,%f,%f);\nMC%d->SetFillStyle(0);\nMC%d->SetLineColor(3);\nMC%d->Draw(\"only\");\n",
3740  im,Cx,Cy,r_r,r_r,0.,360.,im,im,im);
3741  } // end of if (fabs(carica)>=0.1 )
3742  } // end if ( pMC )
3743  };// end of if( daSttTrackaMCTrack>-1
3744 //----------- fine parte del MC
3745  fprintf(MACRO,"}\n");
3746  fclose(MACRO);
3747 
3748 
3749  return ;
3750 
3751 }
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Double_t xmax
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
const Double_t APOTEMAMINSKEWSTRAW
const Double_t BFIELD
Int_t * fParticle
Definition: run_full.C:24
void DrawBiHexagonInMacro(Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
Double_t
const Double_t APOTEMAMINOUTERPARSTRAW
void disegnaSciTilHit(int colorcode, Double_t DIMENSIONSCITIL, FILE *MACRO, double posx, double posy, int ScitilHit, int tipo)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
const Double_t VERTICALGAP
const Double_t APOTEMAMAXINNERPARSTRAW
const int MAXSTTHITSINTRACK
const Double_t CVEL
Double_t xmin
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
const Double_t APOTEMAMAXSKEWSTRAW
Double_t R
Definition: checkhelixhit.C:61
void DrawHexagonCircleInMacro(Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
void disegnaAssiXY(FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
const Double_t DIMENSIONSCITIL

The documentation for this class was generated from the following files: