3 #include "FairMCPoint.h"
9 #include "TClonesArray.h"
34 fprintf(MACRO,
"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,505);\n",xmin,0.,xmax,0.,xmin,xmax);
35 fprintf(MACRO,
"Assex->SetTitle(\"X\");\n");
36 fprintf(MACRO,
"Assex->SetTitleOffset(1.5);\n");
37 fprintf(MACRO,
"Assex->Draw();\n");
38 fprintf(MACRO,
"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,505);\n", 0.,ymin,0.,ymax,ymin,ymax);
39 fprintf(MACRO,
"Assey->SetTitle(\"Y\");\n");
40 fprintf(MACRO,
"Assey->SetTitleOffset(1.5);\n");
41 fprintf(MACRO,
"Assey->Draw();\n");
64 double x1,x2,y1,y2,
L,Rr, RR;
71 Rr =
sqrt(posx*posx+posy*posy);
72 x1 = posx + posy*L/Rr;
73 x2 = posx - posy*L/Rr;
74 y1 = posy - posx*L/Rr;
75 y2 = posy + posx*L/Rr;
82 RR = posx*posx+posy*posy;
84 x1 = posx + posy*L/Rr;
86 x2 = posx - posy*L/Rr;
88 y1 = posy - posx*L/Rr;
90 y2 = posy + posx*L/Rr;
94 fprintf(MACRO,
"TLine *Tile%d = new TLine(%f,%f,%f,%f);\n",ScitilHit,x1,y1,x2,y2);
95 fprintf(MACRO,
"Tile%d->SetLineColor(%d);\n",ScitilHit,colorcode);
100 fprintf(MACRO,
"Tile%d->SetLineWidth(2);\n",ScitilHit);
101 }
else if (tipo==1) {
103 fprintf(MACRO,
"Tile%d->SetLineWidth(3);\n",ScitilHit);
106 fprintf(MACRO,
"Tile%d->SetLineWidth(3);\n",ScitilHit);
110 fprintf(MACRO,
"Tile%d->Draw();\n",ScitilHit);
132 side_x[] = { -vgap/2., -Ama , -Ama, -vgap/2., -vgap/2., -Ami,
133 -Ami, -vgap/2., -vgap/2.},
134 side_y[] = {(-0.5*vgap+2.*Ama)/
sqrt(3.), Ama/
sqrt(3.), -Ama/
sqrt(3.),
135 -(-0.5*vgap+2.*Ama)/
sqrt(3.), -(-0.5*vgap+2.*Ami)/
sqrt(3.),
136 -Ami/
sqrt(3.), Ami/
sqrt(3.), (-0.5*vgap+2.*Ami)/
sqrt(3.),
137 (-0.5*vgap+2.*Ama)/
sqrt(3.) };
140 for(iside=0;iside<8;iside++){
142 "TLine* %sL%d = new TLine(%f,%f,%f,%f);\n",name,
143 iside,side_x[iside],side_y[iside],side_x[iside+1],side_y[iside+1]);
144 fprintf(MACRO,
"%sL%d->SetLineColor(%d);\n",name,iside,color);
145 fprintf(MACRO,
"%sL%d->SetLineStyle(2);\n",name,iside);
146 fprintf(MACRO,
"%sL%d->Draw();\n",name,iside);
150 for(iside=0;iside<8;iside++){
152 "TLine* %sR%d = new TLine(%f,%f,%f,%f);\n",name,
153 iside,-side_x[iside],side_y[iside],-side_x[iside+1],side_y[iside+1]);
154 fprintf(MACRO,
"%sR%d->SetLineColor(%d);\n",name,iside,color);
155 fprintf(MACRO,
"%sR%d->SetLineStyle(2);\n",name,iside);
156 fprintf(MACRO,
"%sR%d->Draw();\n",name,iside);
179 const double PI=3.141592654;
182 Double_t side_x[] = { -GAP/2., -GAP/2. , -ApotemaMin, -ApotemaMin, -GAP/2., -GAP/2. },
183 side_y[] = {
sqrt(Rma*Rma-GAP*GAP/4.), (2.*ApotemaMin-0.5*GAP)/
sqrt(3.),
185 -ApotemaMin/
sqrt(3.),
186 -(2.*ApotemaMin-0.5*GAP)/
sqrt(3.), -
sqrt(Rma*Rma-GAP*GAP/4.)};
190 for(iside=0;iside<5;iside++){
192 "TLine* %sL%d = new TLine(%f,%f,%f,%f);\n",name,
193 iside,side_x[iside],side_y[iside],side_x[iside+1],side_y[iside+1]);
194 fprintf(MACRO,
"%sL%d->SetLineColor(%d);\n",name,iside,color);
195 fprintf(MACRO,
"%sL%d->SetLineStyle(2);\n",name,iside);
196 fprintf(MACRO,
"%sL%d->Draw();\n",name,iside);
200 for(iside=0;iside<5;iside++){
202 "TLine* %sR%d = new TLine(%f,%f,%f,%f);\n",name,
203 iside,-side_x[iside],side_y[iside],-side_x[iside+1],side_y[iside+1]);
204 fprintf(MACRO,
"%sR%d->SetLineColor(%d);\n",name,iside,color);
205 fprintf(MACRO,
"%sR%d->SetLineStyle(2);\n",name,iside);
206 fprintf(MACRO,
"%sR%d->Draw();\n",name,iside);
211 angle1 =
atan2 ( side_y[0], side_x[0])*180./
PI;
212 angle2 = 360. +
atan2 ( side_y[4], side_x[4])*180./
PI;
213 fprintf(MACRO,
"TEllipse* %sCircleL = new TEllipse(0.,0.,%f,%f,%f,%f);\n",
214 name,Rma,Rma,angle1,angle2);
215 fprintf(MACRO,
"%sCircleL->SetFillStyle(0);\n",name);
216 fprintf(MACRO,
"%sCircleL->SetLineColor(%d);\n",name,color);
217 fprintf(MACRO,
"%sCircleL->Draw(\"only\");\n",name);
221 angle2 =
atan2 ( side_y[0], -side_x[0])*180./
PI;
222 angle1 =
atan2 ( side_y[4], -side_x[4])*180./
PI;
223 fprintf(MACRO,
"TEllipse* %sCircleR = new TEllipse(0.,0.,%f,%f,%f,%f);\n",
224 name,Rma,Rma,angle1,angle2);
225 fprintf(MACRO,
"%sCircleR->SetFillStyle(0);\n",name);
226 fprintf(MACRO,
"%sCircleR->SetLineColor(%d);\n",name,color);
227 fprintf(MACRO,
"%sCircleR->Draw(\"only\");\n",name);
256 vers[0] = Oxx - info->
at(infopar*7+0);
257 vers[1] = Oyy - info->
at(infopar*7+1);
258 norm =
sqrt( vers[0]*vers[0] + vers[1]*vers[1] );
261 Posiz[0] = -999999999.;
265 if(
fabs( Rr -
fabs( norm - info->
at(infopar*7+3) ) )
267 fabs( Rr - (norm + info->
at(infopar*7+3)) ) ) {
269 Posiz[0] = info->
at(infopar*7+0) + info->
at(infopar*7+3)*vers[0]/norm;
270 Posiz[1] = info->
at(infopar*7+1) + info->
at(infopar*7+3)*vers[1]/norm;
274 Posiz[0] = info->
at(infopar*7+0) - info->
at(infopar*7+3)*vers[0]/norm;
275 Posiz[1] = info->
at(infopar*7+1) - info->
at(infopar*7+3)*vers[1]/norm;
285 if(
fabs(KAPPA)<1.e-20 ){
286 Posiz[2] = -888888888.;
291 fi =
atan2(-vers[1],-vers[0]);
292 if(fi<0.) fi += 2.*
PI;
295 if(fi > FI0 ) FI0 += 2.*
PI;
298 if(fi < FI0 ) fi += 2.*
PI;
300 Posiz[2] = (fi-FI0)/KAPPA;
333 double const PI = 3.141592654;
335 FairMCPoint *puntator;
350 int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
351 MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
375 int IVOLTE = In_Put.
IVOLTE;
462 Int_t nSttHit = In_Put.
nSttHit;
512 Double_t ultimoang[nTotalCandidates];
513 Double_t primoang[nTotalCandidates];
518 Vec<Double_t> ultimoangolo(ultimoang,nTotalCandidates,
"ultimoangolo");
519 Vec<Double_t> primoangolo(primoang,nTotalCandidates,
"primoangolo");
528 WriteMacroSttParallelExternal(In_Put);
529 WriteMacroSttParallel(In_Put);
537 for( i= 0, k=-1; i< nTotalCandidates; i++){
538 Double_t esseSciTil[nSciTilHitsinTrack.
at(i)];
539 if(!keepit.
at(i))
continue;
540 for(j=0;j< nSciTilHitsinTrack.
at(i);j++){
543 posizSciTil.
at(ListSciTilHitsinTrack.
at(i*MAXSCITILHITSINTRACK+j)*3+0),
544 posizSciTil.
at(ListSciTilHitsinTrack.
at(i*MAXSCITILHITSINTRACK+j)*3+1),
557 esseSciTil[j] =
atan2(YintersectionList[0]-Oy.
at(i),
558 XintersectionList[0]-Ox.
at(i));
561 esseSciTil[j] =
atan2( 0.5*(YintersectionList[0]+YintersectionList[1])
562 -Oy.
at(i),0.5*(XintersectionList[0]+XintersectionList[1])-Ox.
at(i));
564 if ( esseSciTil[j]<0.) esseSciTil[j] += 2.*
PI;
573 if(!keepit.
at(i))
continue;
591 if ( esseSciTilAlone[j]<0.) esseSciTilAlone[j] += 2.*
PI;
601 int npunti=-1+nSttParHitsinTrack.
at(i)+nSttSkewHitsinTrack.
at(i)+
602 nMvdPixelHitsinTrack.
at(i)+nMvdStripHitsinTrack.
at(i)+nSciTilHitsinTrack.
at(i);
604 if (ListTrackCandHitType.
at(i*dime+npunti) == 0){
605 ultimoangolo[
i] =
atan2( YMvdPixel.
at( ListTrackCandHit.
at(i*dime+npunti) )-Oy.
at(i),
606 XMvdPixel.
at( ListTrackCandHit.
at(i*dime+npunti) )-Ox.
at(i));
607 }
else if (ListTrackCandHitType.
at(i*dime+npunti) == 1){
608 ultimoangolo[
i] =
atan2( YMvdStrip.
at( ListTrackCandHit.
at(i*dime+npunti) )-Oy.
at(i),
609 XMvdStrip.
at( ListTrackCandHit.
at(i*dime+npunti) )-Ox.
at(i));
610 }
else if( ListTrackCandHitType.
at(i*dime+npunti) == 2 ){
615 ListTrackCandHit.
at(i*dime+npunti),
627 ultimoangolo[
i] =
atan2( Posiz1[1]-Oy.
at(i),Posiz1[0]-Ox.
at(i));
629 }
else if ( ListTrackCandHitType.
at(i*dime+npunti) == 3 ){
632 SchosenSkew.
at(i*MAXSTTHITS +ListTrackCandHit.
at(i*dime+npunti) );
633 }
else if ( ListTrackCandHitType.
at(i*dime+npunti) == 1001){
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));
638 if( ultimoangolo[i]<0.) ultimoangolo[
i]+= 2.*
PI;
643 primoangolo[
i] = fmod(FI0.
at(i),2.*
PI);
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;
651 if( ultimoangolo[i]<primoangolo[i]) ultimoangolo[
i]+=2.*
PI;
652 ultimoangolo[
i]=ultimoangolo[
i]*180./
PI;
653 primoangolo[
i]=primoangolo[
i]*180./
PI;
657 if( nSttParHitsinTrack.
at(i)+nMvdPixelHitsinTrack.
at(i)+
658 nMvdStripHitsinTrack.
at(i)>0 && doMcComparison) {
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();
667 WriteMacroSttParallelAssociatedHitsandMvdwithMC(
674 nSttParHitsinTrack.
at(i),
677 daTrackFoundaTrackMC.
at(i),
678 nMvdPixelHitsinTrack.
at(i),
679 nMvdStripHitsinTrack.
at(i),
680 nSttSkewHitsinTrack.
at(i)
687 if( nSttSkewHitsinTrack.
at(i)+nMvdPixelHitsinTrack.
at(i)+
688 nMvdStripHitsinTrack.
at(i)>0 && doMcComparison){
689 WriteMacroSkewAssociatedHitswithMC(
697 WriteMacroSkewAssociatedHitswithMC_Degree(
712 WriteMacroParallelHitsGeneral(
713 APOTEMAMAXINNERPARSTRAW,
715 APOTEMAMINOUTERPARSTRAW,
739 APOTEMASTRAWDETECTORMIN,
754 WriteMacroParallelHitsGeneralConformalwithMC(
755 APOTEMAMAXINNERPARSTRAW,
757 APOTEMAMINOUTERPARSTRAW,
781 APOTEMASTRAWDETECTORMIN,
797 WriteMacroParallel_MvdHitsGeneralConformalwithMC(
798 APOTEMAMAXINNERPARSTRAW,
800 APOTEMAMINOUTERPARSTRAW,
824 APOTEMASTRAWDETECTORMIN,
839 WriteMacroAllHitsRestanti(
840 APOTEMAMAXINNERPARSTRAW,
842 APOTEMAMINOUTERPARSTRAW,
844 &InclusionListSciTil,
850 &ListTrackCandHitType,
852 MAXMVDPIXELHITSINTRACK,
854 MAXMVDSTRIPHITSINTRACK,
855 MAXSCITILHITSINTRACK,
869 APOTEMASTRAWDETECTORMIN,
909 int MAXMVDPIXELHITSINTRACK,
911 int MAXMVDSTRIPHITSINTRACK,
912 int MAXSCITILHITSINTRACK,
916 Short_t nMvdPixelHit,
917 Short_t nMvdStripHit,
922 Short_t nSttTrackCand,
940 bool exclusionStt[MAXSTTHITS],
941 exclusionPixel[MAXMVDPIXELHITS],
942 exclusionStrip[MAXMVDSTRIPHITS];
959 int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
960 MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
964 for(i=0;i<nSttHit;i++){
965 exclusionStt[
i]=
false;
967 for(i=0;i<nMvdPixelHit;i++){
968 exclusionPixel[
i]=
false;
970 for(i=0;i<nMvdStripHit;i++){
971 exclusionStrip[
i]=
false;
976 for(i=0;i<nSttTrackCand;i++){
977 if(!keepit->
at(i))
continue;
979 for(j=0;j<nTrackCandHit->
at(i);j++){
981 switch (ListTrackCandHitType->
at(i*dime+j)){
983 exclusionPixel[ ListTrackCandHit->
at(i*dime+j) ] =
true;
986 exclusionStrip[ ListTrackCandHit->
at(i*dime+j) ] =
true;
989 exclusionStt[ ListTrackCandHit->
at(i*dime+j) ] =
true;
1004 sprintf(nome,
"MacroSttMvdHitsRestantiEvent%d", IVOLTE);
1005 sprintf(nome2,
"%s.C",nome);
1006 FILE * MACRO = fopen(nome2,
"w");
1007 fprintf(MACRO,
"void %s()\n{\n",nome);
1008 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1011 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1016 sprintf(myname,
"InnerPar");
1017 DrawBiHexagonInMacro(
1020 APOTEMASTRAWDETECTORMIN,
1021 APOTEMAMAXINNERPARSTRAW,
1027 sprintf(myname,
"Skew");
1028 DrawBiHexagonInMacro(
1031 APOTEMAMINSKEWSTRAW,
1032 APOTEMAMAXSKEWSTRAW,
1038 sprintf(myname,
"OuterPar");
1039 DrawHexagonCircleInMacro(
1042 APOTEMAMINOUTERPARSTRAW,
1049 for( i=0; i< nSttHit; i++) {
1050 if( (!exclusionStt[i]) && InclusionListStt->
at(i) ) {
1051 if( info->
at(i*7+5) == 1 ) {
1052 fprintf(MACRO,
"TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
1053 i,info->
at(i*7+0),info->
at(i*7+1),info->
at(i*7+3),info->
at(i*7+3),
i,
i);
1055 fprintf(MACRO,
"TMarker* SS%d = new TMarker(%f,%f,%d);\nSS%d->SetMarkerColor(1);\nSS%d->Draw();\n",
1056 i,info->
at(i*7+0),info->
at(i*7+1),28,
i,
i);
1060 for( i=0; i< nMvdPixelHit; i++) {
1061 if( !exclusionPixel[i]) {
1063 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1064 i,XMvdPixel->
at(i),YMvdPixel->
at(i),26,
i,
i);
1067 for( i=0; i< nMvdStripHit; i++) {
1068 if( !exclusionStrip[i]) {
1070 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1071 i,XMvdStrip->
at(i),YMvdStrip->
at(i),25,
i,
i);
1075 for( i=0; i< nSciTilHits; i++) {
1076 if( InclusionListSciTil->
at(i)) {
1078 "TMarker* SciT%d = new TMarker(%f,%f,%d);\nSciT%d->SetMarkerColor(1);\nSciT%d->Draw();\n",
1079 i,posizSciTil->
at(i*3+0),posizSciTil->
at(i*3+1),30,
i,
i);
1082 fprintf(MACRO,
"}\n");
1106 bool doMcComparison,
1107 TClonesArray *fMCTrackArray,
1113 Short_t nMvdPixelHit,
1114 Short_t nMvdStripHit,
1115 Short_t nSciTilHits,
1116 Short_t nTracksFoundSoFar,
1161 char nome[300], nome2[300];
1163 const double PI = 3.141592654;
1169 sprintf(nome,
"MacroSttMvdAllHitsEvent%d", IVOLTE);
1170 sprintf(nome2,
"%s.C",nome);
1171 FILE * MACRO = fopen(nome2,
"w");
1172 fprintf(MACRO,
"void %s()\n{\n",nome);
1181 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1183 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1188 sprintf(myname,
"InnerPar");
1189 DrawBiHexagonInMacro(
1192 APOTEMASTRAWDETECTORMIN,
1193 APOTEMAMAXINNERPARSTRAW,
1199 sprintf(myname,
"Skew");
1200 DrawBiHexagonInMacro(
1203 APOTEMAMINSKEWSTRAW,
1204 APOTEMAMAXSKEWSTRAW,
1210 sprintf(myname,
"OuterPar");
1211 DrawHexagonCircleInMacro(
1214 APOTEMAMINOUTERPARSTRAW,
1221 for( i=0; i< Nhits; i++) {
1223 if( info->
at(i*7+5) == 1 ) {
1224 fprintf(MACRO,
"TEllipse* Paral%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParal%d->SetFillStyle(0);\nParal%d->Draw();\n",
1225 i,info->
at(i*7+0),info->
at(i*7+1),info->
at(i*7+3),info->
at(i*7+3),
i,
i);
1227 fprintf(MACRO,
"TMarker* Skew%d = new TMarker(%f,%f,%d);\nSkew%d->SetMarkerColor(1);\nSkew%d->Draw();\n",
1228 i,info->
at(i*7+0),info->
at(i*7+1),28,
i,
i);
1232 for( ii=0; ii< nMvdStripHit; ii++) {
1234 x2= XMvdStrip->
at(ii)+sigmaXMvdStrip->
at(ii);
1236 y2= YMvdStrip->
at(ii)+sigmaYMvdStrip->
at(ii);
1238 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1239 ii,XMvdStrip->
at(ii),YMvdStrip->
at(ii),25,ii,ii);
1243 for( ii=0; ii< nMvdPixelHit; ii++) {
1245 x2= XMvdPixel->
at(ii)+sigmaXMvdPixel->
at(ii);
1247 y2= YMvdPixel->
at(ii)+sigmaYMvdPixel->
at(ii);
1249 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1250 ii,XMvdPixel->
at(ii),YMvdPixel->
at(ii),26,ii,ii);
1257 for( i=0; i< nSciTilHits; i++) {
1262 posizSciTil->
at(i*3+0),
1263 posizSciTil->
at(i*3+1),
1273 for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1275 if(!keepit->
at(i))
continue;
1281 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,%f,%f);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw(\"only\");\n",
1282 ii,aaa,bbb,rrr,rrr,primoangolo->
at(i),ultimoangolo->
at(i),ii,ii,ii);
1290 fprintf(MACRO,
"}\n");
1295 if(!doMcComparison)
return;
1299 sprintf(nome,
"MacroSttMvdAllHitswithMCEvent%d", IVOLTE);
1300 sprintf(nome2,
"%s.C",nome);
1301 MACRO = fopen(nome2,
"w");
1302 fprintf(MACRO,
"void %s()\n{\n",nome);
1305 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1308 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1311 sprintf(myname,
"InnerPar");
1312 DrawBiHexagonInMacro(
1315 APOTEMASTRAWDETECTORMIN,
1316 APOTEMAMAXINNERPARSTRAW,
1322 sprintf(myname,
"Skew");
1323 DrawBiHexagonInMacro(
1326 APOTEMAMINSKEWSTRAW,
1327 APOTEMAMAXSKEWSTRAW,
1333 sprintf(myname,
"OuterPar");
1334 DrawHexagonCircleInMacro(
1337 APOTEMAMINOUTERPARSTRAW,
1344 for( i=0; i< Nhits; i++) {
1348 if( info->
at(i*7+5) == 1 ) {
1349 fprintf(MACRO,
"TEllipse* Paral%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParal%d->SetFillStyle(0);\nParal%d->Draw();\n",
1350 i,info->
at(i*7+0),info->
at(i*7+1),info->
at(i*7+3),info->
at(i*7+3),
i,
i);
1352 fprintf(MACRO,
"TMarker* Skew%d = new TMarker(%f,%f,%d);\nSkew%d->SetMarkerColor(1);\nSkew%d->Draw();\n",
1353 i,info->
at(i*7+0),info->
at(i*7+1),28,
i,
i);
1357 for( ii=0; ii< nMvdStripHit; ii++) {
1359 x2= XMvdStrip->
at(ii)+sigmaXMvdStrip->
at(ii);
1361 y2= YMvdStrip->
at(ii)+sigmaYMvdStrip->
at(ii);
1363 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
1364 ii,XMvdStrip->
at(ii),YMvdStrip->
at(ii),25,ii,ii);
1368 for( ii=0; ii< nMvdPixelHit; ii++) {
1370 x2= XMvdPixel->
at(ii)+sigmaXMvdPixel->
at(ii);
1372 y2= YMvdPixel->
at(ii)+sigmaYMvdPixel->
at(ii);
1374 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
1375 ii,XMvdPixel->
at(ii),YMvdPixel->
at(ii),26,ii,ii);
1380 for( i=0; i< nSciTilHits; i++) {
1387 posizSciTil->
at(i*3+0),
1388 posizSciTil->
at(i*3+1),
1403 for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1405 if(!keepit->
at(i))
continue;
1411 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,%f,%f);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw(\"only\");\n",
1412 ii,aaa,bbb,rrr,rrr,primoangolo->
at(i),ultimoangolo->
at(i),ii,ii,ii);
1418 for(i=0; i<nMCTracks;i++) {
1420 Double_t alfa0, newalfa, newx, newy,primo, ultimo ;
1421 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
1424 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1427 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
1428 if (icode>1000000000) carica = 1.;
1429 else carica = fParticle->Charge()/3. ;
1434 aaa =
sqrt( Px*Px + Py*Py);
1435 if(
fabs(carica) > 0.1 ){
1436 Rr = aaa*1000./(BFIELD*
CVEL);
1438 Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
1439 Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
1442 primo=alfa0 =
atan2(Oyy-Cy, Oxx-Cx);
1445 newalfa = alfa0 - carica*j*PI/45;
1446 newx = Cx + Rr*
cos(newalfa);
1447 newy = Cy + Rr*
sin(newalfa);
1448 if(newx > xmax || newx < xmin || newy>ymax||newy<ymin){
1450 if(primo > ultimo ) { primo = ultimo; ultimo = alfa0;};
1461 "TEllipse* MC%d = new TEllipse(%f,%f,%f,%f,%f,%f);\nMC%d->SetFillStyle(0);\nMC%d->SetLineColor(3);\nMC%d->Draw(\"only\");\n",
1462 i,Cx,Cy,Rr,Rr,primo*180./PI,ultimo*180./PI,i,i,i);
1468 if( Oxx < xmin || Oxx > xmax || Oyy < ymin || Oyy > ymax)
continue;
1469 double time, time1, time2;
1470 if(
fabs(Px) >1.e-10 ){
1471 time2 = (xmax-Oxx)/Px;
1472 time1 = (xmin-Oxx)/Px;
1473 if(time1<0. && time2<0.) {
1475 }
else if(time2>0.&&time1<0.){
1478 }
else if (time1>0. && time2<0.) {
1491 fprintf(MACRO,
"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1493 fprintf(MACRO,
"MCneut%d->SetLineStyle(2);\n",i);
1494 fprintf(MACRO,
"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
1496 }
else if(
fabs(Px) >1.e-10 ) {
1497 if(
fabs(Py) >1.e-10 )
continue;
1498 time2 = (ymax-Oyy)/Py;
1499 time1 = (ymin-Oyy)/Py;
1500 if(time1<0. && time2<0.) {
1502 }
else if(time2>0.&&time1<0.){
1504 }
else if (time1>0. && time2<0.) {
1507 y2= time2>time1 ? ymax : ymin ;
1509 fprintf(MACRO,
"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1511 fprintf(MACRO,
"MCneut%d->SetLineStyle(2);\n",i);
1512 fprintf(MACRO,
"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
1529 fprintf(MACRO,
"}\n");
1559 bool doMcComparison,
1568 Short_t nSciTilHits,
1569 Short_t nTracksFoundSoFar,
1599 delta, deltax, deltay,
1613 char nome[300], nome2[300];
1615 const double PI = 3.141592654;
1623 Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
1628 Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
1629 GAMM[nTracksFoundSoFar];
1637 sprintf(nome,
"MacroSttAllHitsConformalwithMCEvent%d", IVOLTE);
1638 sprintf(nome2,
"%s.C",nome);
1639 FILE * MACRO = fopen(nome2,
"w");
1640 fprintf(MACRO,
"void %s()\n{\n",nome);
1650 for( i=0; i< nSciTilHits; i++) {
1651 Double_t erre = posizSciTil->
at(i*3+0)*posizSciTil->
at(i*3+0)+
1652 posizSciTil->
at(i*3+1)*posizSciTil->
at(i*3+1);
1653 USciTil[
i] = posizSciTil->
at(i*3+0)/erre;
1654 VSciTil[
i] = posizSciTil->
at(i*3+1)/erre;
1655 if (USciTil[i] < xmin) xmin = USciTil[
i];
1656 if (USciTil[i] > xmax) xmax = USciTil[
i];
1657 if (VSciTil[i] < ymin) ymin = VSciTil[
i];
1658 if (VSciTil[i] > ymax) ymax = VSciTil[
i];
1663 for( i=0; i< Nhits; i++) {
1665 if( info->
at(i*7+5) == 1 ) {
1667 gamma = info->
at(i*7+0)*info->
at(i*7+0) +
1668 info->
at(i*7+1)*info->
at(i*7+1) - info->
at(i*7+3)*info->
at(i*7+3);
1669 Ox[
i] = info->
at(i*7+0) / gamma;
1670 Oy[
i] = info->
at(i*7+1) / gamma;
1671 Radius[
i] = info->
at(i*7+3)/gamma;
1672 if (Ox[i]-Radius[i] < xmin) xmin = Ox[
i]-Radius[
i];
1673 if (Ox[i]+Radius[i] > xmax) xmax = Ox[
i]+Radius[
i];
1674 if (Oy[i]-Radius[i] < ymin) ymin = Oy[
i]-Radius[
i];
1675 if (Oy[i]+Radius[i] > ymax) ymax = Oy[
i]+Radius[
i];
1679 if( xmin > 0. ) xmin = 0.;
1680 if( xmax < 0.) xmax = 0.;
1681 if( ymin > 0. ) ymin = 0.;
1682 if( ymax < 0.) ymax = 0.;
1685 deltay = ymax - ymin;
1687 if( deltax > deltay) {
1688 ymin -= 0.5*(deltax-deltay);
1689 ymax = ymin+ deltax;
1692 xmin -= 0.5*(deltay-deltax);
1693 xmax = xmin+ deltay;
1697 xmax = xmax + delta*0.15;
1698 xmin = xmin - delta*0.15;
1700 ymax = ymax + delta*0.15;
1701 ymin = ymin - delta*0.15;
1705 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
1706 xmin,ymin,xmax,ymax);
1711 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1712 In_Put.
NRDIVCONFORMAL,1./APOTEMASTRAWDETECTORMIN,1./APOTEMASTRAWDETECTORMIN,
1717 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1730 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
1736 double RMAXSCITIL=50.;
1739 x1=
cos(ff)/RMAXSCITIL;
1740 y1=
sin(ff)/RMAXSCITIL;
1743 fprintf(MACRO,
"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
1748 fprintf(MACRO,
"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",xmin,0.,xmax,0.,xmin,xmax);
1749 fprintf(MACRO,
"Assex->SetTitle(\"U \");\n");
1750 fprintf(MACRO,
"Assex->SetTitleOffset(1.5);\n");
1751 fprintf(MACRO,
"Assex->Draw();\n");
1752 fprintf(MACRO,
"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n", 0.,ymin,0.,ymax,ymin,ymax);
1753 fprintf(MACRO,
"Assey->SetTitle(\"V \");\n");
1754 fprintf(MACRO,
"Assey->SetTitleOffset(1.5);\n");
1755 fprintf(MACRO,
"Assey->Draw();\n");
1759 for( i=0; i< Nhits; i++) {
1761 if( info->
at(i*7+5) == 1 ) {
1763 "TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
1764 i,Ox[i],Oy[i],Radius[i],Radius[i],i,i);
1771 for( i=0; i< nSciTilHits; i++) {
1778 posizSciTil->
at(i*3+0),
1779 posizSciTil->
at(i*3+1),
1791 for(i=0; i<nTracksFoundSoFar; i++){
1792 if(!keepit->
at(i))
continue;
1794 ALFA[
i] = -2.*Oxxx->
at(i);
1795 BETA[
i] = -2.*Oyyy->
at(i);
1796 GAMMA[
i]= Oxxx->
at(i)*Oxxx->
at(i)+Oyyy->
at(i)*Oyyy->
at(i)
1797 - R->
at(i) * R->
at(i);
1798 if(
fabs(GAMMA[i]) > 1.e-10) {
1799 aaa = -0.5*ALFA[
i]/GAMMA[
i];
1800 bbb = -0.5*BETA[
i]/GAMMA[
i];
1801 rrr =
sqrt( aaa*aaa+bbb*bbb-1./GAMMA[i]);
1802 if(
fabs(rrr/GAMMA[i]) < 30.) {
1804 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,0.,360.);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw();\n",
1805 i,aaa,bbb,rrr,rrr,i,i,i);
1809 yl = -xmin*ALFA[
i]/BETA[
i] - 1./BETA[
i];
1810 yu = -xmax*ALFA[
i]/BETA[
i] - 1./BETA[
i];
1811 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1812 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
1813 fprintf(MACRO,
"ris%d->Draw();\n",i);
1820 if(
fabs(BETA[i]) < 1.e-10){
1821 if(
fabs(ALFA[i])<1.e-10) {
1824 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n"
1825 ,i,-1./ALFA[i],ymin,- 1./ALFA[i],ymax);
1826 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
1827 fprintf(MACRO,
"ris%d->Draw();\n",i);
1830 yl = -xmin*ALFA[
i]/BETA[
i] - 1./BETA[
i];
1831 yu = -xmax*ALFA[
i]/BETA[
i] - 1./BETA[
i];
1832 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1833 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
1834 fprintf(MACRO,
"ris%d->Draw();\n",i);
1847 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
1849 for(i=0;i<nMCTracks; i++){
1851 if ( ! pMC )
continue;
1857 aaa =
sqrt( Px*Px + Py*Py);
1858 Rr = aaa*1000./(BFIELD*
CVEL);
1859 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1860 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
1861 if (icode>1000000000) carica = 1.;
1862 else carica = fParticle->Charge()/3. ;
1863 if (
fabs(carica)<0.1 )
continue;
1864 Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
1865 Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
1866 gamma = -Rr*Rr + Cx*Cx+Cy*Cy;
1867 if(
fabs(gamma)< 0.001) {
1869 yl = xmin*(-Cx/Cy) + 0.5/Cy;
1870 yu = xmax*(-Cx/Cy) + 0.5/Cy;
1878 fprintf(MACRO,
"TLine* MCris%d = new TLine(%f,%f,%f,%f);\n",i,xl,yl,xu,yu);
1879 fprintf(MACRO,
"MCris%d->SetLineStyle(2);\n",i);
1880 fprintf(MACRO,
"MCris%d->SetLineColor(3);\n",i);
1881 fprintf(MACRO,
"MCris%d->SetLineWidth(1);\n",i);
1882 fprintf(MACRO,
"MCris%d->Draw();\n",i);
1885 if(
fabs(Rr/gamma) > 1.) {
1886 if(
fabs(Cy)>0.001 ) {
1887 yl = -xmin*Cx/Cy+0.5/Cy;
1888 yu = -xmax*Cx/Cy+0.5/Cy;
1889 fprintf(MACRO,
"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
1890 fprintf(MACRO,
"MCline%d->SetLineColor(3);\n",i);
1891 fprintf(MACRO,
"MCline%d->Draw();\n",i);
1893 fprintf(MACRO,
"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n"
1894 ,i,2.*Cx,ymin,2.*Cx,ymax);
1895 fprintf(MACRO,
"MCline%d->SetLineColor(2);\n",i);
1896 fprintf(MACRO,
"MCline%d->Draw();\n",i);
1899 fprintf(MACRO,
"TEllipse* MCcerchio%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nMCcerchio%d->SetLineColor(3);\n",
1900 i,Cx/gamma,Cy/gamma,Rr/
fabs(gamma),Rr/
fabs(gamma),i);
1902 fprintf(MACRO,
"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
1911 fprintf(MACRO,
"}\n");
1939 bool doMcComparison,
1946 Short_t nMvdPixelHit,
1947 Short_t nMvdStripHit,
1948 Short_t nSciTilHits,
1949 Short_t nTracksFoundSoFar,
1979 delta, deltax, deltay,
1993 char nome[300], nome2[300];
1995 const double PI = 3.141592654;
2003 Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
2010 VPixel[nMvdPixelHit],
2011 PRadius[nMvdPixelHit],
2012 UStrip[nMvdStripHit],
2013 VStrip[nMvdStripHit],
2014 SRadius[nMvdStripHit];
2025 Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
2026 GAMM[nTracksFoundSoFar];
2034 sprintf(nome,
"MacroSttMvdAllHitsConformalwithMCEvent%d", IVOLTE);
2035 sprintf(nome2,
"%s.C",nome);
2036 FILE * MACRO = fopen(nome2,
"w");
2037 fprintf(MACRO,
"void %s()\n{\n",nome);
2047 for( i=0; i< nSciTilHits; i++) {
2048 Double_t erre = posizSciTil->
at(i*3+0)*posizSciTil->
at(i*3+0)+
2049 posizSciTil->
at(i*3+1)*posizSciTil->
at(i*3+1);
2050 USciTil[
i] = posizSciTil->
at(i*3+0)/erre;
2051 VSciTil[
i] = posizSciTil->
at(i*3+1)/erre;
2052 if (USciTil[i] < xmin) xmin = USciTil[
i];
2053 if (USciTil[i] > xmax) xmax = USciTil[
i];
2054 if (VSciTil[i] < ymin) ymin = VSciTil[
i];
2055 if (VSciTil[i] > ymax) ymax = VSciTil[
i];
2060 for( i=0; i< Nhits; i++) {
2062 if( info->
at(i*7+5) == 1 ) {
2064 gamma = info->
at(i*7+0)*info->
at(i*7+0) +
2065 info->
at(i*7+1)*info->
at(i*7+1) - info->
at(i*7+3)*info->
at(i*7+3);
2066 Ox[
i] = info->
at(i*7+0) / gamma;
2067 Oy[
i] = info->
at(i*7+1) / gamma;
2068 Radius[
i] = info->
at(i*7+3)/gamma;
2069 if (Ox[i]-Radius[i] < xmin) xmin = Ox[
i]-Radius[
i];
2070 if (Ox[i]+Radius[i] > xmax) xmax = Ox[
i]+Radius[
i];
2071 if (Oy[i]-Radius[i] < ymin) ymin = Oy[
i]-Radius[
i];
2072 if (Oy[i]+Radius[i] > ymax) ymax = Oy[
i]+Radius[
i];
2080 pseudoRadius = 0.01 ;
2082 for( i=0; i< nMvdPixelHit; i++) {
2086 CC = XMvdPixel->
at(i)*XMvdPixel->
at(i) + YMvdPixel->
at(i)*YMvdPixel->
at(i);
2088 gamma = CC - pseudoRadius*pseudoRadius;
2089 PixelU[
i] = XMvdPixel->
at(i) / gamma;
2090 PixelV[
i] = YMvdPixel->
at(i) / gamma;
2091 RadiusP[
i] = pseudoRadius/gamma;
2092 if (PixelU[i]-RadiusP[i] < xmin) xmin = PixelU[
i]-RadiusP[
i];
2093 if (PixelU[i]+RadiusP[i] > xmax) xmax = PixelU[
i]+RadiusP[
i];
2094 if (PixelV[i]-RadiusP[i] < ymin) ymin = PixelV[
i]-RadiusP[
i];
2095 if (PixelV[i]+RadiusP[i] > ymax) ymax = PixelV[
i]+RadiusP[
i];
2100 for( i=0; i< nMvdStripHit; i++) {
2104 CC = XMvdStrip->
at(i)*XMvdStrip->
at(i) + YMvdStrip->
at(i)*YMvdStrip->
at(i);
2106 gamma = CC - pseudoRadius*pseudoRadius;
2107 StripU[
i] = XMvdStrip->
at(i) / gamma;
2108 StripV[
i] = YMvdStrip->
at(i) / gamma;
2109 RadiusS[
i] = pseudoRadius/gamma;
2111 if (StripU[i]-RadiusS[i] < xmin) xmin = StripU[
i]-RadiusS[
i];
2112 if (StripU[i]+RadiusS[i] > xmax) xmax = StripU[
i]+RadiusS[
i];
2113 if (StripV[i]-RadiusS[i] < ymin) ymin = StripV[
i]-RadiusS[
i];
2114 if (StripV[i]+RadiusS[i] > ymax) ymax = StripV[
i]+RadiusS[
i];
2120 if( xmin > 0. ) xmin = 0.;
2121 if( xmax < 0.) xmax = 0.;
2122 if( ymin > 0. ) ymin = 0.;
2123 if( ymax < 0.) ymax = 0.;
2126 deltay = ymax - ymin;
2128 if( deltax > deltay) {
2129 ymin -= 0.5*(deltax-deltay);
2130 ymax = ymin+ deltax;
2133 xmin -= 0.5*(deltay-deltax);
2134 xmax = xmin+ deltay;
2138 xmax = xmax + delta*0.15;
2139 xmin = xmin - delta*0.15;
2141 ymax = ymax + delta*0.15;
2142 ymin = ymin - delta*0.15;
2146 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
2147 xmin,ymin,xmax,ymax);
2152 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2153 In_Put.
NRDIVCONFORMAL,1./APOTEMASTRAWDETECTORMIN,1./APOTEMASTRAWDETECTORMIN,
2158 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2171 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
2177 double RMAXSCITIL=50.;
2180 x1=
cos(ff)/RMAXSCITIL;
2181 y1=
sin(ff)/RMAXSCITIL;
2184 fprintf(MACRO,
"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
2189 fprintf(MACRO,
"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",xmin,0.,xmax,0.,xmin,xmax);
2190 fprintf(MACRO,
"Assex->SetTitle(\"U \");\n");
2191 fprintf(MACRO,
"Assex->SetTitleOffset(1.5);\n");
2192 fprintf(MACRO,
"Assex->Draw();\n");
2193 fprintf(MACRO,
"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n", 0.,ymin,0.,ymax,ymin,ymax);
2194 fprintf(MACRO,
"Assey->SetTitle(\"V \");\n");
2195 fprintf(MACRO,
"Assey->SetTitleOffset(1.5);\n");
2196 fprintf(MACRO,
"Assey->Draw();\n");
2200 for( i=0; i< Nhits; i++) {
2202 if( info->
at(i*7+5) == 1 ) {
2204 "TEllipse* E%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nE%d->SetFillStyle(0);\nE%d->Draw();\n",
2205 i,Ox[i],Oy[i],Radius[i],Radius[i],i,i);
2212 for( i=0; i< nMvdPixelHit; i++) {
2214 "TMarker* Pixel%d = new TMarker(%f,%f,%d);\nPixel%d->SetMarkerColor(1);\nPixel%d->Draw();\n",
2215 i,PixelU[i],PixelV[i],26,i,i);
2224 for( i=0; i< nMvdStripHit; i++) {
2226 "TMarker* Strip%d = new TMarker(%f,%f,%d);\nStrip%d->SetMarkerColor(1);\nStrip%d->Draw();\n",
2227 i,StripU[i],StripV[i],25,i,i);
2233 for( i=0; i< nSciTilHits; i++) {
2240 posizSciTil->
at(i*3+0),
2241 posizSciTil->
at(i*3+1),
2253 for(i=0; i<nTracksFoundSoFar; i++){
2254 if(!keepit->
at(i))
continue;
2256 ALFA[
i] = -2.*Oxxx->
at(i);
2257 BETA[
i] = -2.*Oyyy->
at(i);
2258 GAMMA[
i]= Oxxx->
at(i)*Oxxx->
at(i)+Oyyy->
at(i)*Oyyy->
at(i)
2259 - R->
at(i) * R->
at(i);
2260 if(
fabs(GAMMA[i]) > 1.e-10) {
2261 aaa = -0.5*ALFA[
i]/GAMMA[
i];
2262 bbb = -0.5*BETA[
i]/GAMMA[
i];
2263 rrr =
sqrt( aaa*aaa+bbb*bbb-1./GAMMA[i]);
2264 if(
fabs(rrr/GAMMA[i]) < 30.) {
2266 "TEllipse* ris%d=new TEllipse(%f,%f,%f,%f,0.,360.);\nris%d->SetFillStyle(0);\nris%d->SetLineColor(2);\nris%d->Draw();\n",
2267 i,aaa,bbb,rrr,rrr,i,i,i);
2271 yl = -xmin*ALFA[
i]/BETA[
i] - 1./BETA[
i];
2272 yu = -xmax*ALFA[
i]/BETA[
i] - 1./BETA[
i];
2273 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2274 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
2275 fprintf(MACRO,
"ris%d->Draw();\n",i);
2282 if(
fabs(BETA[i]) < 1.e-10){
2283 if(
fabs(ALFA[i])<1.e-10) {
2286 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n"
2287 ,i,-1./ALFA[i],ymin,- 1./ALFA[i],ymax);
2288 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
2289 fprintf(MACRO,
"ris%d->Draw();\n",i);
2292 yl = -xmin*ALFA[
i]/BETA[
i] - 1./BETA[
i];
2293 yu = -xmax*ALFA[
i]/BETA[
i] - 1./BETA[
i];
2294 fprintf(MACRO,
"TLine* ris%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2295 fprintf(MACRO,
"ris%d->SetLineColor(2);\n",i);
2296 fprintf(MACRO,
"ris%d->Draw();\n",i);
2309 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
2311 for(i=0;i<nMCTracks; i++){
2313 if ( ! pMC )
continue;
2319 aaa =
sqrt( Px*Px + Py*Py);
2320 Rr = aaa*1000./(BFIELD*
CVEL);
2321 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2322 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
2323 if (icode>1000000000) carica = 1.;
2324 else carica = fParticle->Charge()/3. ;
2325 if (
fabs(carica)<0.1 )
continue;
2326 Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
2327 Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
2328 gamma = -Rr*Rr + Cx*Cx+Cy*Cy;
2329 if(
fabs(gamma)< 0.001) {
2331 yl = xmin*(-Cx/Cy) + 0.5/Cy;
2332 yu = xmax*(-Cx/Cy) + 0.5/Cy;
2340 fprintf(MACRO,
"TLine* MCris%d = new TLine(%f,%f,%f,%f);\n",i,xl,yl,xu,yu);
2341 fprintf(MACRO,
"MCris%d->SetLineStyle(2);\n",i);
2342 fprintf(MACRO,
"MCris%d->SetLineColor(3);\n",i);
2343 fprintf(MACRO,
"MCris%d->SetLineWidth(1);\n",i);
2344 fprintf(MACRO,
"MCris%d->Draw();\n",i);
2347 if(
fabs(Rr/gamma) > 1.) {
2348 if(
fabs(Cy)>0.001 ) {
2349 yl = -xmin*Cx/Cy+0.5/Cy;
2350 yu = -xmax*Cx/Cy+0.5/Cy;
2351 fprintf(MACRO,
"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n",i,xmin,yl,xmax,yu);
2352 fprintf(MACRO,
"MCline%d->SetLineColor(3);\n",i);
2353 fprintf(MACRO,
"MCline%d->Draw();\n",i);
2355 fprintf(MACRO,
"TLine* MCline%d = new TLine(%f,%f,%f,%f);\n"
2356 ,i,2.*Cx,ymin,2.*Cx,ymax);
2357 fprintf(MACRO,
"MCline%d->SetLineColor(2);\n",i);
2358 fprintf(MACRO,
"MCline%d->Draw();\n",i);
2361 fprintf(MACRO,
"TEllipse* MCcerchio%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nMCcerchio%d->SetLineColor(3);\n",
2362 i,Cx/gamma,Cy/gamma,Rr/
fabs(gamma),Rr/
fabs(gamma),i);
2364 fprintf(MACRO,
"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
2373 fprintf(MACRO,
"}\n");
2410 Short_t charge = In_Put.
Charge[iTrack] ;
2417 int IVOLTE = In_Put.
IVOLTE ;
2441 Short_t nSkewCommon = In_Put.
nSkewCommon[iTrack] ;
2463 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2468 Int_t
i, j, i1, ii, iii, imc, Nmin, Nmax;
2474 zmin, zmax, zmin2, zmax2, Smin, Smax,
2495 char nome2[300],nome[300];
2497 sprintf(nome,
"MacroSttMvdSZwithMCEvent%dT%d", IVOLTE,iNome);
2498 sprintf(nome2,
"%s.C",nome);
2499 MACRO = fopen(nome2,
"w");
2500 fprintf(MACRO,
"{\n");
2505 if( nSciTilHitsinTrack[iTrack]+nSkewHitsinTrack[iTrack]+
2506 nPixelHitsinTrack[iTrack]+
2507 nStripHitsinTrack[iTrack] == 1)
2520 for(i=0; i<nSciTilHitsinTrack[iTrack];i++){
2521 j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+
i];
2522 if( ESSE[i]>Smax ) Smax=ESSE[
i];
2523 if( ESSE[i]<Smin ) Smin=ESSE[
i];
2524 if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
2525 if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
2532 if( ESSEalone[i]>Smax ) Smax=ESSEalone[
i];
2533 if( ESSEalone[i]<Smin ) Smin=ESSEalone[
i];
2534 if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
2535 if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
2547 auxZErrorafterTilt[2];
2552 auxInfo[
i][j] = info[i*7+j];
2557 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2558 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii];
2576 for( ii=0; ii<2; ii++){
2577 if( auxZ[ii] < 999998.){
2578 if(zmin>auxZ[ii]-auxZDrift[ii]) zmin=auxZ[ii]-auxZDrift[ii];
2579 if(zmax<auxZ[ii]+auxZDrift[ii]) zmax=auxZ[ii]+auxZDrift[ii];
2581 if(Smin>auxS[ii]-auxSDrift[ii]) Smin=auxS[ii]-auxSDrift[ii];
2582 if(Smax<auxS[ii]+auxSDrift[ii]) Smax=auxS[ii]+auxSDrift[ii];
2591 for( iii=0; iii< nMCSkewAlone; iii++) {
2597 MCSkewAloneList[iTrack*In_Put.
nSttHit+iii],
2615 if(auxZ[0] <999998. ) { ii = 0; dis =auxZ[0]; }
2616 else if (auxZ[1] <999998. ) { ii = 1;dis =auxZ[1];}
2617 else if (auxZ[0] > 999999.5 && auxZ[1]>999999.5)
2627 if(auxZ[0]<auxZ[1]) { ii=0 ; dis=auxZ[0]-1000000.;}
else { ii=1; dis = auxZ[1]-1000000.;}
2629 }
else if (auxZ[0] > 999999.5) {
2631 dis=auxZ[0]-1000000.;
2632 }
else if (auxZ[1] > 999999.5) {
2634 dis=auxZ[0]-1000000.;
2639 if(zmin>dis-auxZDrift[ii]) zmin=dis-auxZDrift[ii];
2640 if(zmax<dis+auxZDrift[ii]) zmax=dis+auxZDrift[ii];
2654 for(i=0; i<nPixelHitsinTrack[iTrack];i++){
2655 ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+
i];
2657 if( zmin > ZMvdPixel[ ii ] )
2658 zmin = ZMvdPixel[ ii ];
2659 if( zmax < ZMvdPixel[ii ] )
2660 zmax = ZMvdPixel[ii ];
2662 esse =
atan2( YMvdPixel[ ii ]-Oyy,
2663 XMvdPixel[ ii ]-Oxx);
2664 if(esse<0.) esse +=2.*
PI;
2668 if( Smin > esse ) Smin = esse;
2669 if( Smax < esse ) Smax = esse;
2674 for(i=0; i<nStripHitsinTrack[iTrack];i++){
2675 ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+
i];
2676 if( zmin > ZMvdStrip[ ii ] )
2677 zmin = ZMvdStrip[ ii ];
2678 if( zmax < ZMvdStrip[ii ] )
2679 zmax = ZMvdStrip[ii ];
2681 esse =
atan2( YMvdStrip[ ii ]-Oyy,
2682 XMvdStrip[ ii ]-Oxx);
2683 if(esse<0.) esse +=2.*
PI;
2687 if( Smin > esse ) Smin = esse;
2688 if( Smax < esse ) Smax = esse;
2693 for(i=0; i<nMCMvdPixelAlone;i++){
2696 if( zmin > ZMvdPixel[ ii ] )
2697 zmin = ZMvdPixel[ ii ];
2698 if( zmax < ZMvdPixel[ii ] )
2699 zmax = ZMvdPixel[ii ];
2701 esse =
atan2( YMvdPixel[ ii ]-Oyy,
2702 XMvdPixel[ ii ]-Oxx);
2703 if(esse<0.) esse +=2.*
PI;
2704 if( Smin > esse ) Smin = esse;
2705 if( Smax < esse ) Smax = esse;
2711 for(i=0; i<nMCMvdStripAlone;i++){
2713 if( zmin > ZMvdStrip[ ii ] )
2714 zmin = ZMvdStrip[ ii ];
2715 if( zmax < ZMvdStrip[ii ] )
2716 zmax = ZMvdStrip[ii ];
2718 esse =
atan2( YMvdStrip[ ii ]-Oyy,
2719 XMvdStrip[ ii ]-Oxx);
2720 if(esse<0.) esse +=2.*
PI;
2721 if( Smin > esse ) Smin = esse;
2722 if( Smax < esse ) Smax = esse;
2726 if( zmax >= zmin && Smax >= Smin ) {
2738 if(Smax > 2.*PI) Smax = 2.*
PI;
2739 if( Smin < 0.) Smin = 0.;
2746 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
2747 zmin-0.1*deltaz,Rr*(Smin-.1*deltaS),zmax+0.1*deltaz,Rr*(Smax+0.1*deltaS));
2748 fprintf(MACRO,
"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
2749 zmin-0.01*deltaz,Rr*(Smin+0.05*deltaS),zmax+0.01*deltaz,Rr*(Smin+0.05*deltaS),
2750 zmin-0.01*deltaz,zmax+0.01*deltaz);
2751 fprintf(MACRO,
"Assex->SetTitle(\"Z (cm)\");\n");
2752 fprintf(MACRO,
"Assex->Draw();\n");
2753 fprintf(MACRO,
"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
2754 zmin+0.05*deltaz,Rr*(Smin-0.01*deltaS),zmin+0.05*deltaz,Rr*(Smax+0.01*deltaS),
2755 Rr*(Smin-0.01*deltaS),Rr*(Smax+0.01*deltaS));
2756 fprintf(MACRO,
"Assey->SetTitle(\"Helix crf (cm)\");\n");
2757 fprintf(MACRO,
"Assey->Draw();\n");
2763 for(i=0;i<nSciTilHitsinTrack[iTrack];i++){
2764 j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+
i];
2803 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2804 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
2824 for( ii=0; ii<2; ii++){
2825 if( auxZ[ii] > 999998.)
continue;
2829 for( i1=0; i1<nSkewCommon; i1++){
2830 if ( SkewCommonList[iTrack*MAXSTTHITSINTRACK +i1] == i ){
2837 "TEllipse* spurioSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nspurioSkew%d_%d->SetFillStyle(0);\n",
2838 i,ii,auxZ[ii],Rr*auxS[ii],auxZDrift[ii],Rr*auxSDrift[ii],0.,i,ii);
2839 fprintf(MACRO,
"spurioSkew%d_%d->SetLineColor(2);\n",i,ii);
2840 fprintf(MACRO,
"spurioSkew%d_%d->Draw();\n",i,ii);
2842 fprintf(MACRO,
"TEllipse* Skew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nSkew%d_%d->SetFillStyle(0);\n",
2843 i,ii,auxZ[ii],Rr*auxS[ii],auxZDrift[ii],Rr*auxSDrift[ii],0.,i,ii);
2844 fprintf(MACRO,
"Skew%d_%d->Draw();\n",i,ii);
2856 for( iii=0; iii< nMCSkewAlone; iii++) {
2857 i = MCSkewAloneList[iTrack*In_Put.
nSttHit+iii];
2887 if(auxZ[0] <999998. ) { ii = 0; dis =auxZ[0]; }
2888 else if (auxZ[1] <999998. ) { ii = 1;dis =auxZ[1];}
2889 else if (auxZ[0] > 999999.5 && auxZ[1]>999999.5)
2899 if(auxZ[0]<auxZ[1]) { ii=0 ; dis=auxZ[0]-1000000.;}
else { ii=1; dis = auxZ[1]-1000000.;}
2901 }
else if (auxZ[0] > 999999.5) {
2903 dis=auxZ[0]-1000000.;
2904 }
else if (auxZ[1] > 999999.5) {
2906 dis=auxZ[0]-1000000.;
2913 fprintf(MACRO,
"TEllipse* AloneSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nAloneSkew%d_%d->SetFillStyle(0);\n",
2914 i,ii,dis,Rr*auxS[ii],auxZDrift[ii],Rr*auxSDrift[ii],0.,i,ii);
2918 fprintf(MACRO,
"AloneSkew%d_%d->SetLineColor(4);\n",i,ii);
2919 fprintf(MACRO,
"AloneSkew%d_%d->Draw();\n",i,ii);
2932 for(i=0; i<nPixelHitsinTrack[iTrack];i++){
2933 ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+
i];
2934 if( zmin > ZMvdPixel[ ii ] )
2935 zmin = ZMvdPixel[ ii ];
2936 if( zmax < ZMvdPixel[ii ] )
2937 zmax = ZMvdPixel[ii ];
2939 esse =
atan2( YMvdPixel[ ii ]-Oyy,
2940 XMvdPixel[ ii ]-Oxx);
2941 if(esse<0.) esse +=2.*
PI;
2945 if( Smin > esse ) Smin = esse;
2946 if( Smax < esse ) Smax = esse;
2950 for(
int k=0; k<nMvdPixelCommon;k++){
2951 if( MvdPixelCommonList[iTrack*MAXMVDPIXELHITSINTRACK+k]== ii){
2953 "TMarker* CommonPixel%d = new TMarker(%f,%f,%d);\nCommonPixel%d->SetMarkerColor(1);\n",
2954 ii,ZMvdPixel[ii],Rr*esse,26,ii);
2955 fprintf(MACRO,
"CommonPixel%d->Draw();\n",ii);
2961 fprintf(MACRO,
"TMarker* SpuriousPixel%d = new TMarker(%f,%f,%d);\nSpuriousPixel%d->SetMarkerColor(2);\n",
2962 ii,ZMvdPixel[ii],Rr*esse,26,ii);
2963 fprintf(MACRO,
"SpuriousPixel%d->Draw();\n",ii);
2968 for(i=0; i<nStripHitsinTrack[iTrack];i++){
2969 ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+
i];
2970 if( zmin > ZMvdStrip[ ii ] )
2971 zmin = ZMvdStrip[ ii ];
2972 if( zmax < ZMvdStrip[ii ] )
2973 zmax = ZMvdStrip[ii ];
2975 esse =
atan2( YMvdStrip[ ii ]-Oyy,
2976 XMvdStrip[ ii ]-Oxx);
2977 if(esse<0.) esse +=2.*
PI;
2981 if( Smin > esse ) Smin = esse;
2982 if( Smax < esse ) Smax = esse;
2985 for(
int k=0; k<nMvdStripCommon;k++){
2986 if( MvdStripCommonList[iTrack*MAXMVDSTRIPHITSINTRACK+k]== ii){
2987 fprintf(MACRO,
"TMarker* CommonStrip%d = new TMarker(%f,%f,%d);\nCommonStrip%d->SetMarkerColor(1);\n",
2988 ii,ZMvdStrip[ii],Rr*esse,25,ii);
2989 fprintf(MACRO,
"CommonStrip%d->Draw();\n",ii);
2995 fprintf(MACRO,
"TMarker* SpuriousStrip%d = new TMarker(%f,%f,%d);\nSpuriousStrip%d->SetMarkerColor(2);\n",
2996 ii,ZMvdStrip[ii],Rr*esse,25,ii);
2997 fprintf(MACRO,
"SpuriousStrip%d->Draw();\n",ii);
3005 for(i=0; i<nMCMvdPixelAlone;i++){
3008 if( zmin > ZMvdPixel[ ii ] )
3009 zmin = ZMvdPixel[ ii ];
3010 if( zmax < ZMvdPixel[ii ] )
3011 zmax = ZMvdPixel[ii ];
3013 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3014 XMvdPixel[ ii ]-Oxx);
3015 if(esse<0.) esse +=2.*
PI;
3016 if( Smin > esse ) Smin = esse;
3017 if( Smax < esse ) Smax = esse;
3018 fprintf(MACRO,
"TMarker* AlonePixel%d = new TMarker(%f,%f,%d);\nAlonePixel%d->SetMarkerColor(4);\n",
3019 ii,ZMvdPixel[ii],Rr*esse,26,ii);
3020 fprintf(MACRO,
"AlonePixel%d->Draw();\n",ii);
3026 for(i=0; i<nMCMvdStripAlone;i++){
3028 if( zmin > ZMvdStrip[ ii ] )
3029 zmin = ZMvdStrip[ ii ];
3030 if( zmax < ZMvdStrip[ii ] )
3031 zmax = ZMvdStrip[ii ];
3033 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3034 XMvdStrip[ ii ]-Oxx);
3035 if(esse<0.) esse +=2.*
PI;
3036 if( Smin > esse ) Smin = esse;
3037 if( Smax < esse ) Smax = esse;
3039 fprintf(MACRO,
"TMarker* AloneStrip%d = new TMarker(%f,%f,%d);\nAloneStrip%d->SetMarkerColor(4);\n",
3040 ii,ZMvdStrip[ii],Rr*esse,25,ii);
3041 fprintf(MACRO,
"AloneStrip%d->Draw();\n",ii);
3055 if( -KAPPA*charge>0.) {
3057 cout<<
"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3058 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3065 cout<<
"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3066 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3077 fmin = KAPPA*zmin + FI0;
3078 fmax = KAPPA*zmax + FI0;
3080 fmax = KAPPA*zmin + FI0;
3081 fmin = KAPPA*zmax + FI0;
3084 Nmax = (int) (0.5*fmax/ PI);
3086 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3089 Nmin = (int) (0.5*fmin/ PI);
3091 Nmin = ((int) (0.5*fmin/ PI) )-1;
3093 if(
fabs(KAPPA)<1.e-10) {
3094 cout<<
"da WriteMacroSkewAssociatedHitswithMC, questa traccia Found da PR non plottata"
3095 <<
" perche' ha fabs(KAPPA)<1.e-10.\n";
3097 for(i=Nmin; i<= Nmax;i++){
3099 z1 = (i*2.*PI-FI0)/KAPPA;
3100 z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3102 "TLine* FOUND%d = new TLine(%f,%f,%f,%f);\nFOUND%d->SetLineColor(2);\nFOUND%d->Draw();\n",
3103 i-Nmin,z1,0.,z2, Rr*2.*PI,i-Nmin,i-Nmin);
3119 imc= daTrackFoundaTrackMC ;
3123 Double_t Fifi, Kakka, o_x, o_y, Cx, Cy, Px, Py, carica ;
3132 aaa =
sqrt( Px*Px + Py*Py);
3134 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
3135 if (icode>1000000000) carica = 1.;
3136 else carica = fParticle->Charge()/3. ;
3137 if (
fabs(carica)>=0.1 ){
3138 Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
3139 Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
3140 Fifi =
atan2(Cy, Cx);
3141 if(Fifi<0.) Fifi += 2.*
PI;
3143 else Kakka = -carica*0.001*BFIELD*CVEL/pMC->
GetMomentum().Z();
3145 FI0 = fmod(Fifi+ PI, 2.*PI);
3147 fmin = KAPPA*zmin + FI0;
3148 fmax = KAPPA*zmax + FI0;
3150 fmax = KAPPA*zmin + FI0;
3151 fmin = KAPPA*zmax + FI0;
3154 Nmax = (int) (0.5*fmax/ PI);
3156 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3159 Nmin = (int) (0.5*fmin/ PI);
3161 Nmin = ((int) (0.5*fmin/ PI) )-1;
3164 for(i=Nmin; i<= Nmax;i++){
3166 z1 = (i*2.*PI-FI0)/KAPPA;
3167 z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3168 fprintf(MACRO,
"TLine* MC%d_%d = new TLine(%f,%f,%f,%f);\nMC%d_%d->SetLineColor(3);\nMC%d_%d->Draw();\n",
3169 imc,i-Nmin,z1,0.,z2,Rr* 2.*PI,imc,i-Nmin,imc,i-Nmin);
3180 fprintf(MACRO,
"}\n");
3212 Short_t charge = In_Put.
Charge[iTrack] ;
3219 int IVOLTE = In_Put.
IVOLTE ;
3243 Short_t nSkewCommon = In_Put.
nSkewCommon[iTrack] ;
3265 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
3270 Int_t
i, j, i1, ii, iii, imc, Nmin, Nmax;
3276 zmin, zmax, zmin2, zmax2, Smin, Smax,
3297 char nome2[300],nome[300];
3299 sprintf(nome,
"MacroSttMvdSZDegreewithMCEvent%dT%d", IVOLTE,iNome);
3300 sprintf(nome2,
"%s.C",nome);
3301 MACRO = fopen(nome2,
"w");
3302 fprintf(MACRO,
"{\n");
3307 if( nSciTilHitsinTrack[iTrack]+nSkewHitsinTrack[iTrack]+
3308 nPixelHitsinTrack[iTrack]+
3309 nStripHitsinTrack[iTrack] == 1)
3322 for(i=0; i<nSciTilHitsinTrack[iTrack];i++){
3323 j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+
i];
3324 if( ESSE[i]>Smax ) Smax=ESSE[
i];
3325 if( ESSE[i]<Smin ) Smin=ESSE[
i];
3326 if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
3327 if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
3334 if( ESSEalone[i]>Smax ) Smax=ESSEalone[
i];
3335 if( ESSEalone[i]<Smin ) Smin=ESSEalone[
i];
3336 if( posizSciTil[j*3+2]>zmax ) zmax=posizSciTil[j*3+2];
3337 if( posizSciTil[j*3+2]<zmin ) zmin=posizSciTil[j*3+2];
3349 auxZErrorafterTilt[2];
3354 auxInfo[
i][j] = info[i*7+j];
3359 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
3360 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii];
3378 for( ii=0; ii<2; ii++){
3379 if( auxZ[ii] < 999998.){
3380 if(zmin>auxZ[ii]-auxZDrift[ii]) zmin=auxZ[ii]-auxZDrift[ii];
3381 if(zmax<auxZ[ii]+auxZDrift[ii]) zmax=auxZ[ii]+auxZDrift[ii];
3383 if(Smin>auxS[ii]-auxSDrift[ii]) Smin=auxS[ii]-auxSDrift[ii];
3384 if(Smax<auxS[ii]+auxSDrift[ii]) Smax=auxS[ii]+auxSDrift[ii];
3397 for( iii=0; iii< nMCSkewAlone; iii++) {
3402 MCSkewAloneList[iTrack*In_Put.
nSttHit+iii],
3420 if(auxZ[0] <999998. ) { ii = 0; dis =auxZ[0]; }
3421 else if (auxZ[1] <999998. ) { ii = 1;dis =auxZ[1];}
3422 else if (auxZ[0] > 999999.5 && auxZ[1]>999999.5)
3432 if(auxZ[0]<auxZ[1]) { ii=0 ; dis=auxZ[0]-1000000.;}
else { ii=1; dis = auxZ[1]-1000000.;}
3434 }
else if (auxZ[0] > 999999.5) {
3436 dis=auxZ[0]-1000000.;
3437 }
else if (auxZ[1] > 999999.5) {
3439 dis=auxZ[0]-1000000.;
3444 if(zmin>dis-auxZDrift[ii]) zmin=dis-auxZDrift[ii];
3445 if(zmax<dis+auxZDrift[ii]) zmax=dis+auxZDrift[ii];
3447 if(Smin>auxS[ii]-auxSDrift[ii]) Smin=auxS[ii]-auxSDrift[ii];
3448 if(Smax<auxS[ii]+auxSDrift[ii]) Smax=auxS[ii]+auxSDrift[ii];
3459 for(i=0; i<nPixelHitsinTrack[iTrack];i++){
3460 ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+
i];
3462 if( zmin > ZMvdPixel[ ii ] )
3463 zmin = ZMvdPixel[ ii ];
3464 if( zmax < ZMvdPixel[ii ] )
3465 zmax = ZMvdPixel[ii ];
3467 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3468 XMvdPixel[ ii ]-Oxx);
3469 if(esse<0.) esse +=2.*
PI;
3473 if( Smin > esse ) Smin = esse;
3474 if( Smax < esse ) Smax = esse;
3479 for(i=0; i<nStripHitsinTrack[iTrack];i++){
3480 ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+
i];
3481 if( zmin > ZMvdStrip[ ii ] )
3482 zmin = ZMvdStrip[ ii ];
3483 if( zmax < ZMvdStrip[ii ] )
3484 zmax = ZMvdStrip[ii ];
3486 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3487 XMvdStrip[ ii ]-Oxx);
3488 if(esse<0.) esse +=2.*
PI;
3492 if( Smin > esse ) Smin = esse;
3493 if( Smax < esse ) Smax = esse;
3498 for(i=0; i<nMCMvdPixelAlone;i++){
3501 if( zmin > ZMvdPixel[ ii ] )
3502 zmin = ZMvdPixel[ ii ];
3503 if( zmax < ZMvdPixel[ii ] )
3504 zmax = ZMvdPixel[ii ];
3506 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3507 XMvdPixel[ ii ]-Oxx);
3508 if(esse<0.) esse +=2.*
PI;
3509 if( Smin > esse ) Smin = esse;
3510 if( Smax < esse ) Smax = esse;
3516 for(i=0; i<nMCMvdStripAlone;i++){
3518 if( zmin > ZMvdStrip[ ii ] )
3519 zmin = ZMvdStrip[ ii ];
3520 if( zmax < ZMvdStrip[ii ] )
3521 zmax = ZMvdStrip[ii ];
3523 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3524 XMvdStrip[ ii ]-Oxx);
3525 if(esse<0.) esse +=2.*
PI;
3526 if( Smin > esse ) Smin = esse;
3527 if( Smax < esse ) Smax = esse;
3531 if( zmax >= zmin && Smax >= Smin ) {
3543 if(Smax > 2.*PI) Smax = 2.*
PI;
3544 if( Smin < 0.) Smin = 0.;
3551 double TRA = 180./
PI;
3553 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
3554 zmin-0.2*deltaz,TRA*(Smin-.1*deltaS),zmax+0.1*deltaz,TRA*(Smax+0.1*deltaS));
3555 fprintf(MACRO,
"TGaxis *Assex = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
3556 zmin-0.01*deltaz,TRA*(Smin+0.05*deltaS),zmax+0.01*deltaz,TRA*(Smin+0.05*deltaS),
3557 zmin-0.01*deltaz,zmax+0.01*deltaz);
3558 fprintf(MACRO,
"Assex->SetTitle(\"Z (cm)\");\n");
3559 fprintf(MACRO,
"Assex->Draw();\n");
3560 fprintf(MACRO,
"TGaxis *Assey = new TGaxis(%f,%f,%f,%f,%f,%f,510);\n",
3561 zmin+0.05*deltaz,TRA*(Smin-0.01*deltaS),zmin+0.05*deltaz,TRA*(Smax+0.01*deltaS),
3562 TRA*(Smin-0.01*deltaS),TRA*(Smax+0.01*deltaS));
3564 fprintf(MACRO,
"Assey->SetTitle(\"#phi (degrees)\");\n");
3565 fprintf(MACRO,
"Assey->Draw();\n");
3566 fprintf(MACRO,
"Assey->SetTitleOffset(1.5);\n");
3572 for(i=0;i<nSciTilHitsinTrack[iTrack];i++){
3573 j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+
i];
3612 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
3613 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
3633 for( ii=0; ii<2; ii++){
3634 if( auxZ[ii] > 999998.)
continue;
3638 for( i1=0; i1<nSkewCommon; i1++){
3639 if ( SkewCommonList[iTrack*MAXSTTHITSINTRACK +i1] == i ){
3646 "TEllipse* spurioSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nspurioSkew%d_%d->SetFillStyle(0);\n",
3647 i,ii,auxZ[ii],TRA*auxS[ii],auxZDrift[ii],TRA*auxSDrift[ii],0.,i,ii);
3648 fprintf(MACRO,
"spurioSkew%d_%d->SetLineColor(2);\n",i,ii);
3649 fprintf(MACRO,
"spurioSkew%d_%d->Draw();\n",i,ii);
3651 fprintf(MACRO,
"TEllipse* Skew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nSkew%d_%d->SetFillStyle(0);\n",
3652 i,ii,auxZ[ii],TRA*auxS[ii],auxZDrift[ii],TRA*auxSDrift[ii],0.,i,ii);
3653 fprintf(MACRO,
"Skew%d_%d->Draw();\n",i,ii);
3665 for( iii=0; iii< nMCSkewAlone; iii++) {
3666 i = MCSkewAloneList[iTrack*In_Put.
nSttHit+iii];
3697 if(auxZ[0] <999998. ) { ii = 0; dis =auxZ[0]; }
3698 else if (auxZ[1] <999998. ) { ii = 1;dis =auxZ[1];}
3699 else if (auxZ[0] > 999999.5 && auxZ[1]>999999.5)
3709 if(auxZ[0]<auxZ[1]) { ii=0 ; dis=auxZ[0]-1000000.;}
else { ii=1; dis = auxZ[1]-1000000.;}
3711 }
else if (auxZ[0] > 999999.5) {
3713 dis=auxZ[0]-1000000.;
3714 }
else if (auxZ[1] > 999999.5) {
3716 dis=auxZ[0]-1000000.;
3722 fprintf(MACRO,
"TEllipse* AloneSkew%d_%d = new TEllipse(%f,%f,%f,%f,0.,360.,%f);\nAloneSkew%d_%d->SetFillStyle(0);\n",
3723 i,ii,dis,TRA*auxS[ii],auxZDrift[ii],TRA*auxSDrift[ii],0.,i,ii);
3727 fprintf(MACRO,
"AloneSkew%d_%d->SetLineColor(4);\n",i,ii);
3728 fprintf(MACRO,
"AloneSkew%d_%d->Draw();\n",i,ii);
3741 for(i=0; i<nPixelHitsinTrack[iTrack];i++){
3742 ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+
i];
3743 if( zmin > ZMvdPixel[ ii ] )
3744 zmin = ZMvdPixel[ ii ];
3745 if( zmax < ZMvdPixel[ii ] )
3746 zmax = ZMvdPixel[ii ];
3748 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3749 XMvdPixel[ ii ]-Oxx);
3750 if(esse<0.) esse +=2.*
PI;
3754 if( Smin > esse ) Smin = esse;
3755 if( Smax < esse ) Smax = esse;
3759 for(
int k=0; k<nMvdPixelCommon;k++){
3760 if( MvdPixelCommonList[iTrack*MAXMVDPIXELHITSINTRACK+k]== ii){
3762 "TMarker* CommonPixel%d = new TMarker(%f,%f,%d);\nCommonPixel%d->SetMarkerColor(1);\n",
3763 ii,ZMvdPixel[ii],TRA*esse,26,ii);
3764 fprintf(MACRO,
"CommonPixel%d->Draw();\n",ii);
3770 fprintf(MACRO,
"TMarker* SpuriousPixel%d = new TMarker(%f,%f,%d);\nSpuriousPixel%d->SetMarkerColor(2);\n",
3771 ii,ZMvdPixel[ii],TRA*esse,26,ii);
3772 fprintf(MACRO,
"SpuriousPixel%d->Draw();\n",ii);
3777 for(i=0; i<nStripHitsinTrack[iTrack];i++){
3778 ii=ListStripHitsinTrack[iTrack*MAXMVDSTRIPHITSINTRACK+
i];
3779 if( zmin > ZMvdStrip[ ii ] )
3780 zmin = ZMvdStrip[ ii ];
3781 if( zmax < ZMvdStrip[ii ] )
3782 zmax = ZMvdStrip[ii ];
3784 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3785 XMvdStrip[ ii ]-Oxx);
3786 if(esse<0.) esse +=2.*
PI;
3790 if( Smin > esse ) Smin = esse;
3791 if( Smax < esse ) Smax = esse;
3794 for(
int k=0; k<nMvdStripCommon;k++){
3795 if( MvdStripCommonList[iTrack*MAXMVDSTRIPHITSINTRACK+k]== ii){
3796 fprintf(MACRO,
"TMarker* CommonStrip%d = new TMarker(%f,%f,%d);\nCommonStrip%d->SetMarkerColor(1);\n",
3797 ii,ZMvdStrip[ii],TRA*esse,25,ii);
3798 fprintf(MACRO,
"CommonStrip%d->Draw();\n",ii);
3804 fprintf(MACRO,
"TMarker* SpuriousStrip%d = new TMarker(%f,%f,%d);\nSpuriousStrip%d->SetMarkerColor(2);\n",
3805 ii,ZMvdStrip[ii],TRA*esse,25,ii);
3806 fprintf(MACRO,
"SpuriousStrip%d->Draw();\n",ii);
3814 for(i=0; i<nMCMvdPixelAlone;i++){
3817 if( zmin > ZMvdPixel[ ii ] )
3818 zmin = ZMvdPixel[ ii ];
3819 if( zmax < ZMvdPixel[ii ] )
3820 zmax = ZMvdPixel[ii ];
3822 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3823 XMvdPixel[ ii ]-Oxx);
3824 if(esse<0.) esse +=2.*
PI;
3825 if( Smin > esse ) Smin = esse;
3826 if( Smax < esse ) Smax = esse;
3827 fprintf(MACRO,
"TMarker* AlonePixel%d = new TMarker(%f,%f,%d);\nAlonePixel%d->SetMarkerColor(4);\n",
3828 ii,ZMvdPixel[ii],TRA*esse,26,ii);
3829 fprintf(MACRO,
"AlonePixel%d->Draw();\n",ii);
3835 for(i=0; i<nMCMvdStripAlone;i++){
3837 if( zmin > ZMvdStrip[ ii ] )
3838 zmin = ZMvdStrip[ ii ];
3839 if( zmax < ZMvdStrip[ii ] )
3840 zmax = ZMvdStrip[ii ];
3842 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3843 XMvdStrip[ ii ]-Oxx);
3844 if(esse<0.) esse +=2.*
PI;
3845 if( Smin > esse ) Smin = esse;
3846 if( Smax < esse ) Smax = esse;
3848 fprintf(MACRO,
"TMarker* AloneStrip%d = new TMarker(%f,%f,%d);\nAloneStrip%d->SetMarkerColor(4);\n",
3849 ii,ZMvdStrip[ii],TRA*esse,25,ii);
3850 fprintf(MACRO,
"AloneStrip%d->Draw();\n",ii);
3864 if( -KAPPA*charge>0.) {
3866 cout<<
"da WriteMacroSkewAssociatedHitswithMC_Degree, questa traccia"
3867 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3874 cout<<
"da WriteMacroSkewAssociatedHitswithMC_Degree, questa traccia"
3875 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3886 fmin = KAPPA*zmin + FI0;
3887 fmax = KAPPA*zmax + FI0;
3889 fmax = KAPPA*zmin + FI0;
3890 fmin = KAPPA*zmax + FI0;
3893 Nmax = (int) (0.5*fmax/ PI);
3895 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3898 Nmin = (int) (0.5*fmin/ PI);
3900 Nmin = ((int) (0.5*fmin/ PI) )-1;
3902 if(
fabs(KAPPA)<1.e-10) {
3903 cout<<
"da WriteMacroSkewAssociatedHitswithMC_Degree, questa traccia Found da PR non plottata"
3904 <<
" perche' ha fabs(KAPPA)<1.e-10.\n";
3906 for(i=Nmin; i<= Nmax;i++){
3908 z1 = (i*2.*PI-FI0)/KAPPA;
3909 z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3911 "TLine* FOUND%d = new TLine(%f,%f,%f,%f);\nFOUND%d->SetLineColor(2);\nFOUND%d->Draw();\n",
3912 i-Nmin,z1,0.,z2, TRA*2.*PI,i-Nmin,i-Nmin);
3928 imc= daTrackFoundaTrackMC ;
3932 Double_t Fifi, Kakka, o_x, o_y, Cx, Cy, Px, Py, carica ;
3941 aaa =
sqrt( Px*Px + Py*Py);
3943 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
3944 if (icode>1000000000) carica = 1.;
3945 else carica = fParticle->Charge()/3. ;
3946 if (
fabs(carica)>=0.1 ){
3947 Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
3948 Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
3949 Fifi =
atan2(Cy, Cx);
3950 if(Fifi<0.) Fifi += 2.*
PI;
3952 else Kakka = -carica*0.001*BFIELD*CVEL/pMC->
GetMomentum().Z();
3954 FI0 = fmod(Fifi+ PI, 2.*PI);
3956 fmin = KAPPA*zmin + FI0;
3957 fmax = KAPPA*zmax + FI0;
3959 fmax = KAPPA*zmin + FI0;
3960 fmin = KAPPA*zmax + FI0;
3963 Nmax = (int) (0.5*fmax/ PI);
3965 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3968 Nmin = (int) (0.5*fmin/ PI);
3970 Nmin = ((int) (0.5*fmin/ PI) )-1;
3973 for(i=Nmin; i<= Nmax;i++){
3975 z1 = (i*2.*PI-FI0)/KAPPA;
3976 z2 = ((i+1)*2.*PI-FI0)/KAPPA;
3977 fprintf(MACRO,
"TLine* MC%d_%d = new TLine(%f,%f,%f,%f);\nMC%d_%d->SetLineColor(3);\nMC%d_%d->Draw();\n",
3978 imc,i-Nmin,z1,0.,z2, TRA*2.*PI,imc,i-Nmin,imc,i-Nmin);
3989 fprintf(MACRO,
"}\n");
4015 Short_t daSttTrackaMCTrack,
4016 Short_t nMvdPixelHitsAssociatedToSttTra,
4017 Short_t nMvdStripHitsAssociatedToSttTra,
4018 Short_t nSkewHitsinTrack
4068 "daTrackFoundaTrackMC") ;
4079 int IVOLTE = In_Put.
IVOLTE;
4215 char nome[300], nome2[300];
4216 sprintf(nome,
"MacroSttMvdXYwithMCEvent%dT%d", IVOLTE,iNome);
4217 sprintf(nome2,
"%s.C",nome);
4218 FILE * MACRO = fopen(nome2,
"w");
4219 fprintf(MACRO,
"{\n");
4229 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
4230 xmin,ymin,xmax,ymax);
4237 sprintf(myname,
"InnerPar");
4238 DrawBiHexagonInMacro(
4241 APOTEMASTRAWDETECTORMIN,
4242 APOTEMAMAXINNERPARSTRAW,
4248 sprintf(myname,
"Skew");
4249 DrawBiHexagonInMacro(
4252 APOTEMAMINSKEWSTRAW,
4253 APOTEMAMAXSKEWSTRAW,
4259 sprintf(myname,
"OuterPar");
4260 DrawHexagonCircleInMacro(
4263 APOTEMAMINOUTERPARSTRAW,
4279 posizSciTil.
at(j*3+0),
4280 posizSciTil.
at(j*3+1),
4293 posizSciTil.
at(j*3+0),
4294 posizSciTil.
at(j*3+1),
4307 posizSciTil.
at(j*3+0),
4308 posizSciTil.
at(j*3+1),
4319 fprintf(MACRO,
"TEllipse* FoundTrack = new TEllipse(%f,%f,%f,%f,%f,%f);\n"
4320 ,Oxx,Oyy,Rr,Rr,primoangolo,ultimoangolo);
4323 "FoundTrack->SetLineColor(2);\nFoundTrack->SetFillStyle(0);\nFoundTrack->Draw(\"only\");\n");
4326 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
4332 for( ii=0; ii< nParalCommon.
at(iTrack); ii++) {
4333 i = ParalCommonList.
at(iTrack*MAXSTTHITSINTRACK+ii) ;
4335 "TEllipse* CommonParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nCommonParalHit%d->SetFillStyle(0);\nCommonParalHit%d->Draw();\n",
4336 i,info[i*7+0],info.
at(i*7+1),info.
at(i*7+3),info.
at(i*7+3),
i,
i);
4339 for( ii=0; ii< nSpuriParinTrack.
at(iTrack); ii++) {
4340 i = ParSpuriList.
at(iTrack*MAXSTTHITSINTRACK+ii) ;
4342 "TEllipse* SpurParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nSpurParalHit%d->SetFillStyle(0);\nSpurParalHit%d->SetLineColor(2);\nSpurParalHit%d->Draw();\n",
4343 i,info[i*7+0],info.
at(i*7+1),info.
at(i*7+3),info.
at(i*7+3),
i,
i,
i);
4346 for( ii=0; ii< nMCParalAlone.
at(iTrack); ii++) {
4347 i = MCParalAloneList.
at(iTrack*In_Put.
nSttHit+ii) ;
4349 "TEllipse* AloneParalHit%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nAloneParalHit%d->SetFillStyle(0);\nAloneParalHit%d->SetLineColor(4);\nAloneParalHit%d->Draw();\n",
4350 i,info[i*7+0],info.
at(i*7+1),info.
at(i*7+3),info.
at(i*7+3),
i,
i,
i);
4356 for( i=0; i< nSkewHitsinTrack; i++) {
4357 ii = ListSttSkewHitsinTrack.
at(iTrack*MAXSTTHITSINTRACK+i);
4358 aaa=Oxx+Rr*
cos(SchosenSkew.
at(iTrack*MAXSTTHITS+ii));
4359 bbb=Oyy+Rr*
sin(SchosenSkew.
at(iTrack*MAXSTTHITS+ii));
4361 for(
int k=0; k<nSkewCommon.
at(iTrack);k++){
4362 if( SkewCommonList.
at(iTrack*MAXSTTHITSINTRACK+k)== ii){
4363 fprintf(MACRO,
"TMarker* CommonSkewHit%d = new TMarker(%f,%f,%d);\n",
4365 fprintf(MACRO,
"CommonSkewHit%d->SetMarkerColor(1);\nCommonSkewHit%d->Draw();\n"
4372 fprintf(MACRO,
"TMarker* SpurSkewHit%d = new TMarker(%f,%f,%d);\n",
4374 fprintf(MACRO,
"SpurSkewHit%d->SetMarkerColor(2);\nSpurSkewHit%d->Draw();\n",ii,ii);
4379 for( ii=0; ii< nMCSkewAlone.
at(iTrack); ii++) {
4380 i = MCSkewAloneList.
at(iTrack*In_Put.
nSttHit+ii) ;
4382 "TMarker* AloneSkewHit%d = new TMarker(%f,%f,%d);\nAloneSkewHit%d->SetMarkerColor(4);\nAloneSkewHit%d->Draw();\n",
4383 i,MCSkewAloneX.
at(i),MCSkewAloneY.
at(i),28,
i,
i);
4388 for( i=0; i< nMvdStripHitsAssociatedToSttTra; i++) {
4396 for(
int k=0; k<nMvdStripCommon.
at(iTrack);k++){
4398 fprintf(MACRO,
"TMarker* CommonMvdStrip%d = new TMarker(%f,%f,%d);\n",
4399 ii,XMvdStrip.
at(ii),YMvdStrip.
at(ii),25);
4400 fprintf(MACRO,
"CommonMvdStrip%d->SetMarkerColor(1);\nCommonMvdStrip%d->Draw();\n",
4407 fprintf(MACRO,
"TMarker* SpurMvdStrip%d = new TMarker(%f,%f,%d);\n",
4408 ii,XMvdStrip.
at(ii),YMvdStrip.
at(ii),25);
4409 fprintf(MACRO,
"SpurMvdStrip%d->SetMarkerColor(2);\nSpurMvdStrip%d->Draw();\n",ii,ii);
4416 for( ii=0; ii< nMCMvdStripAlone.
at(iTrack); ii++) {
4419 "TMarker* AloneMvdStrip%d = new TMarker(%f,%f,%d);\nAloneMvdStrip%d->SetMarkerColor(4);\nAloneMvdStrip%d->Draw();\n",
4420 i,XMvdStrip.
at(i),YMvdStrip.
at(i),25,
i,
i);
4424 for( i=0; i< nMvdPixelHitsAssociatedToSttTra; i++) {
4425 ii = ListMvdPixelHitsinTrack.
at(iTrack*MAXMVDPIXELHITSINTRACK+i);
4432 for(
int k=0; k<nMvdPixelCommon.
at(iTrack);k++){
4434 fprintf(MACRO,
"TMarker* CommonMvdPixel%d = new TMarker(%f,%f,%d);\n",
4435 ii,XMvdPixel.
at(ii),YMvdPixel.
at(ii),26);
4436 fprintf(MACRO,
"CommonMvdPixel%d->SetMarkerColor(1);\nCommonMvdPixel%d->Draw();\n",
4443 fprintf(MACRO,
"TMarker* SpurMvdPixel%d = new TMarker(%f,%f,%d);\n",
4444 ii,XMvdPixel.
at(ii),YMvdPixel.
at(ii),26);
4445 fprintf(MACRO,
"SpurMvdPixel%d->SetMarkerColor(2);\nSpurMvdPixel%d->Draw();\n",ii,ii);
4452 for( ii=0; ii< nMCMvdPixelAlone.
at(iTrack); ii++) {
4455 "TMarker* AloneMvdPixel%d = new TMarker(%f,%f,%d);\nAloneMvdPixel%d->SetMarkerColor(4);\nAloneMvdPixel%d->Draw();\n",
4456 i,XMvdPixel.
at(i),YMvdPixel.
at(i),26,
i,
i);
4460 if( daSttTrackaMCTrack>-1 ) {
4462 Double_t r_r, o_x, o_y, Cx, Cy, Px, Py, carica ;
4464 im=daSttTrackaMCTrack;
4472 aaa =
sqrt( Px*Px + Py*Py);
4473 r_r = aaa*1000./(BFIELD*
CVEL);
4474 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
4475 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
4476 if (icode>1000000000) carica = 1.;
4477 else carica = fParticle->Charge()/3. ;
4478 if (
fabs(carica)>=0.1 ){
4479 Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
4480 Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
4482 "TEllipse* MC%d = new TEllipse(%f,%f,%f,%f,%f,%f);\nMC%d->SetFillStyle(0);\nMC%d->SetLineColor(3);\nMC%d->Draw(\"only\");\n",
4483 im,Cx,Cy,r_r,r_r,0.,360.,im,im,im);
4488 fprintf(MACRO,
"}\n");
4507 char nome[300], nome2[300];
4508 sprintf(nome,
"MacroSttParallel");
4509 sprintf(nome2,
"%s.C",nome);
4510 FILE * MACRO = fopen(nome2,
"w");
4511 fprintf(MACRO,
"{\n");
4529 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
4530 xmin,ymin,xmax,ymax);
4535 sprintf(myname,
"InnerPar");
4536 DrawBiHexagonInMacro(
4546 sprintf(myname,
"Skew");
4547 DrawBiHexagonInMacro(
4557 sprintf(myname,
"OuterPar");
4558 DrawHexagonCircleInMacro(
4568 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
4576 if(!(
fabs( wiredirection.X() )< 0.00001 &&
fabs( wiredirection.Y() )< 0.00001))
continue;
4579 "TEllipse* ParalTube%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParalTube%d->SetFillStyle(0);\nParalTube%d->Draw();\n",
4580 i+1,center.X(),center.Y(),0.5,0.5,
i+1,
i+1);
4584 fprintf(MACRO,
"}\n");
4599 char nome[300], nome2[300];
4600 sprintf(nome,
"MacroSttParallelExternal");
4601 sprintf(nome2,
"%s.C",nome);
4602 FILE * MACRO = fopen(nome2,
"w");
4603 fprintf(MACRO,
"{\n");
4621 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
4622 xmin,ymin,xmax,ymax);
4627 sprintf(myname,
"InnerPar");
4628 DrawBiHexagonInMacro(
4638 sprintf(myname,
"Skew");
4639 DrawBiHexagonInMacro(
4649 sprintf(myname,
"OuterPar");
4650 DrawHexagonCircleInMacro(
4660 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
4669 "TEllipse* ParalTube%d = new TEllipse(%f,%f,%f,%f,0.,360.);\nParalTube%d->SetFillStyle(0);\nParalTube%d->Draw();\n",
4670 i+1,center.X(),center.Y(),0.5,0.5,
i+1,
i+1);
4675 fprintf(MACRO,
"}\n");
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
void WriteMacroSkewAssociatedHitswithMC(Double_t *ESSE, Double_t *ESSEalone, PndTrkPlotMacros2_InputData In_Put, int iNome, int iTrack)
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)
friend F32vec4 sqrt(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
TVector3 GetMomentum() const
void WriteAllMacros(PndTrkPlotMacros2_InputData In_Put)
const Double_t APOTEMAMINSKEWSTRAW
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, PndTrkPlotMacros2_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 APOTEMASTRAWDETECTORMIN, 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, PndTrkPlotMacros2_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 APOTEMASTRAWDETECTORMIN, 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 WriteMacroSttParallel(PndTrkPlotMacros2_InputData In_Put)
const Double_t APOTEMAMINOUTERPARSTRAW
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 WriteMacroSkewAssociatedHitswithMC_Degree(Double_t *ESSE, Double_t *ESSEalone, PndTrkPlotMacros2_InputData In_Put, int iNome, int iTrack)
ClassImp(PndTrkPlotMacros2)
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, PndTrkPlotMacros2_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 APOTEMASTRAWDETECTORMIN, 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)
friend F32vec4 fabs(const F32vec4 &a)
void DrawBiHexagonInMacro(Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
void CalculateSandZ2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t skewnum, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t S[2], Double_t Sdrift[2], Double_t Z[2], Double_t Zdrift[2], Double_t Zerror[2])
const Double_t VERTICALGAP
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
const Double_t APOTEMAMAXINNERPARSTRAW
const int MAXSTTHITSINTRACK
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])
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 APOTEMASTRAWDETECTORMIN, Double_t VERTICALGAP, Vec< Double_t > *XMvdPixel, Vec< Double_t > *XMvdStrip, Vec< Double_t > *YMvdPixel, Vec< Double_t > *YMvdStrip)
void DrawHexagonCircleInMacro(Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
TVector3 GetStartVertex() const
const Double_t APOTEMAMAXSKEWSTRAW
const Double_t APOTEMASTRAWDETECTORMIN
void WriteMacroSttParallelExternal(PndTrkPlotMacros2_InputData In_Put)
TVector3 GetWireDirection()
void WriteMacroSttParallelAssociatedHitsandMvdwithMC(PndTrkPlotMacros2_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)
const Double_t DIMENSIONSCITIL