3 #include "FairMCPoint.h"
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");
61 double x1,x2,y1,y2,
L,Rr, RR;
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;
79 RR = posx*posx+posy*posy;
81 x1 = posx + posy*L/Rr;
83 x2 = posx - posy*L/Rr;
85 y1 = posy - posx*L/Rr;
87 y2 = posy + posx*L/Rr;
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);
97 fprintf(MACRO,
"Tile%d->SetLineWidth(2);\n",ScitilHit);
100 fprintf(MACRO,
"Tile%d->SetLineWidth(3);\n",ScitilHit);
103 fprintf(MACRO,
"Tile%d->SetLineWidth(3);\n",ScitilHit);
107 fprintf(MACRO,
"Tile%d->Draw();\n",ScitilHit);
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.) };
137 for(iside=0;iside<8;iside++){
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);
147 for(iside=0;iside<8;iside++){
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);
176 const double PI=3.141592654;
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.),
182 -ApotemaMin/
sqrt(3.),
183 -(2.*ApotemaMin-0.5*GAP)/
sqrt(3.), -
sqrt(Rma*Rma-GAP*GAP/4.)};
187 for(iside=0;iside<5;iside++){
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);
197 for(iside=0;iside<5;iside++){
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);
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);
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);
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] );
258 Posiz[0] = -999999999.;
262 if(
fabs( Rr -
fabs( norm - info->
at(infopar*7+3) ) )
264 fabs( Rr - (norm + info->
at(infopar*7+3)) ) ) {
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;
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;
282 if(
fabs(KAPPA)<1.e-20 ){
283 Posiz[2] = -888888888.;
288 fi =
atan2(-vers[1],-vers[0]);
289 if(fi<0.) fi += 2.*
PI;
292 if(fi > FI0 ) FI0 += 2.*
PI;
295 if(fi < FI0 ) fi += 2.*
PI;
297 Posiz[2] = (fi-FI0)/KAPPA;
330 double const PI = 3.141592654;
332 FairMCPoint *puntator;
347 int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
348 MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
372 int IVOLTE = In_Put.
IVOLTE;
459 Int_t nSttHit = In_Put.
nSttHit;
509 Double_t ultimoang[nTotalCandidates];
510 Double_t primoang[nTotalCandidates];
515 Vec<Double_t> ultimoangolo(ultimoang,nTotalCandidates,
"ultimoangolo");
516 Vec<Double_t> primoangolo(primoang,nTotalCandidates,
"primoangolo");
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++){
533 posizSciTil.
at(ListSciTilHitsinTrack.
at(i*MAXSCITILHITSINTRACK+j)*3+0),
534 posizSciTil.
at(ListSciTilHitsinTrack.
at(i*MAXSCITILHITSINTRACK+j)*3+1),
547 esseSciTil[j] =
atan2(YintersectionList[0]-Oy.
at(i),
548 XintersectionList[0]-Ox.
at(i));
551 esseSciTil[j] =
atan2( 0.5*(YintersectionList[0]+YintersectionList[1])
552 -Oy.
at(i),0.5*(XintersectionList[0]+XintersectionList[1])-Ox.
at(i));
554 if ( esseSciTil[j]<0.) esseSciTil[j] += 2.*
PI;
571 if(!keepit.
at(i))
continue;
590 if ( esseSciTilAlone[j]<0.) esseSciTilAlone[j] += 2.*
PI;
600 int npunti=-1+nSttParHitsinTrack.
at(i)+nSttSkewHitsinTrack.
at(i)+
601 nMvdPixelHitsinTrack.
at(i)+nMvdStripHitsinTrack.
at(i)+nSciTilHitsinTrack.
at(i);
603 if (ListTrackCandHitType.
at(i*dime+npunti) == 0){
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){
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 ){
615 ListTrackCandHit.
at(i*dime+npunti),
628 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();
668 WriteMacroSttParallelAssociatedHitsandMvdwithMC(
675 nSttParHitsinTrack.
at(i),
678 daTrackFoundaTrackMC.
at(i),
679 nMvdPixelHitsinTrack.
at(i),
680 nMvdStripHitsinTrack.
at(i),
681 nSttSkewHitsinTrack.
at(i)
688 if( nSttSkewHitsinTrack.
at(i)+nMvdPixelHitsinTrack.
at(i)+
689 nMvdStripHitsinTrack.
at(i)>0 && doMcComparison){
690 WriteMacroSkewAssociatedHitswithMC(
703 WriteMacroParallelHitsGeneral(
704 APOTEMAMAXINNERPARSTRAW,
706 APOTEMAMINOUTERPARSTRAW,
745 WriteMacroParallelHitsGeneralConformalwithMC(
746 APOTEMAMAXINNERPARSTRAW,
748 APOTEMAMINOUTERPARSTRAW,
788 WriteMacroParallel_MvdHitsGeneralConformalwithMC(
789 APOTEMAMAXINNERPARSTRAW,
791 APOTEMAMINOUTERPARSTRAW,
830 WriteMacroAllHitsRestanti(
831 APOTEMAMAXINNERPARSTRAW,
833 APOTEMAMINOUTERPARSTRAW,
835 &InclusionListSciTil,
841 &ListTrackCandHitType,
843 MAXMVDPIXELHITSINTRACK,
845 MAXMVDSTRIPHITSINTRACK,
846 MAXSCITILHITSINTRACK,
900 int MAXMVDPIXELHITSINTRACK,
902 int MAXMVDSTRIPHITSINTRACK,
903 int MAXSCITILHITSINTRACK,
907 Short_t nMvdPixelHit,
908 Short_t nMvdStripHit,
913 Short_t nSttTrackCand,
931 bool exclusionStt[MAXSTTHITS],
932 exclusionPixel[MAXMVDPIXELHITS],
933 exclusionStrip[MAXMVDSTRIPHITS];
950 int dime = MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+
951 MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK;
955 for(i=0;i<nSttHit;i++){
956 exclusionStt[
i]=
false;
958 for(i=0;i<nMvdPixelHit;i++){
959 exclusionPixel[
i]=
false;
961 for(i=0;i<nMvdStripHit;i++){
962 exclusionStrip[
i]=
false;
967 for(i=0;i<nSttTrackCand;i++){
968 if(!keepit->
at(i))
continue;
970 for(j=0;j<nTrackCandHit->
at(i);j++){
972 switch (ListTrackCandHitType->
at(i*dime+j)){
974 exclusionPixel[ ListTrackCandHit->
at(i*dime+j) ] =
true;
977 exclusionStrip[ ListTrackCandHit->
at(i*dime+j) ] =
true;
980 exclusionStt[ ListTrackCandHit->
at(i*dime+j) ] =
true;
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);
1002 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1007 sprintf(myname,
"InnerPar");
1008 DrawBiHexagonInMacro(
1012 APOTEMAMAXINNERPARSTRAW,
1018 sprintf(myname,
"Skew");
1019 DrawBiHexagonInMacro(
1022 APOTEMAMINSKEWSTRAW,
1023 APOTEMAMAXSKEWSTRAW,
1029 sprintf(myname,
"OuterPar");
1030 DrawHexagonCircleInMacro(
1033 APOTEMAMINOUTERPARSTRAW,
1040 for( i=0; i< nSttHit; i++) {
1041 if( (!exclusionStt[i]) && InclusionListStt->
at(i) ) {
1042 if( info->
at(i*7+5) == 1 ) {
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);
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);
1051 for( i=0; i< nMvdPixelHit; i++) {
1052 if( !exclusionPixel[i]) {
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);
1058 for( i=0; i< nMvdStripHit; i++) {
1059 if( !exclusionStrip[i]) {
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);
1066 for( i=0; i< nSciTilHits; i++) {
1067 if( InclusionListSciTil->
at(i)) {
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);
1073 fprintf(MACRO,
"}\n");
1097 bool doMcComparison,
1098 TClonesArray *fMCTrackArray,
1104 Short_t nMvdPixelHit,
1105 Short_t nMvdStripHit,
1106 Short_t nSciTilHits,
1107 Short_t nTracksFoundSoFar,
1152 char nome[300], nome2[300];
1154 const double PI = 3.141592654;
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);
1172 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1174 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1179 sprintf(myname,
"InnerPar");
1180 DrawBiHexagonInMacro(
1184 APOTEMAMAXINNERPARSTRAW,
1190 sprintf(myname,
"Skew");
1191 DrawBiHexagonInMacro(
1194 APOTEMAMINSKEWSTRAW,
1195 APOTEMAMAXSKEWSTRAW,
1201 sprintf(myname,
"OuterPar");
1202 DrawHexagonCircleInMacro(
1205 APOTEMAMINOUTERPARSTRAW,
1212 for( i=0; i< Nhits; i++) {
1214 if( info->
at(i*7+5) == 1 ) {
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);
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);
1223 for( ii=0; ii< nMvdStripHit; ii++) {
1225 x2= XMvdStrip->
at(ii)+sigmaXMvdStrip->
at(ii);
1227 y2= YMvdStrip->
at(ii)+sigmaYMvdStrip->
at(ii);
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);
1234 for( ii=0; ii< nMvdPixelHit; ii++) {
1236 x2= XMvdPixel->
at(ii)+sigmaXMvdPixel->
at(ii);
1238 y2= YMvdPixel->
at(ii)+sigmaYMvdPixel->
at(ii);
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);
1248 for( i=0; i< nSciTilHits; i++) {
1253 posizSciTil->
at(i*3+0),
1254 posizSciTil->
at(i*3+1),
1264 for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1266 if(!keepit->
at(i))
continue;
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);
1281 fprintf(MACRO,
"}\n");
1286 if(!doMcComparison)
return;
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);
1296 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",xmin,ymin,xmax,ymax);
1299 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
1302 sprintf(myname,
"InnerPar");
1303 DrawBiHexagonInMacro(
1307 APOTEMAMAXINNERPARSTRAW,
1313 sprintf(myname,
"Skew");
1314 DrawBiHexagonInMacro(
1317 APOTEMAMINSKEWSTRAW,
1318 APOTEMAMAXSKEWSTRAW,
1324 sprintf(myname,
"OuterPar");
1325 DrawHexagonCircleInMacro(
1328 APOTEMAMINOUTERPARSTRAW,
1335 for( i=0; i< Nhits; i++) {
1340 if( info->
at(i*7+5) == 1 ) {
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);
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);
1349 for( ii=0; ii< nMvdStripHit; ii++) {
1351 x2= XMvdStrip->
at(ii)+sigmaXMvdStrip->
at(ii);
1353 y2= YMvdStrip->
at(ii)+sigmaYMvdStrip->
at(ii);
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);
1360 for( ii=0; ii< nMvdPixelHit; ii++) {
1362 x2= XMvdPixel->
at(ii)+sigmaXMvdPixel->
at(ii);
1364 y2= YMvdPixel->
at(ii)+sigmaYMvdPixel->
at(ii);
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);
1372 for( i=0; i< nSciTilHits; i++) {
1379 posizSciTil->
at(i*3+0),
1380 posizSciTil->
at(i*3+1),
1395 for(i=0, ii=0; i<nTracksFoundSoFar; i++){
1397 if(!keepit->
at(i))
continue;
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);
1410 for(i=0; i<nMCTracks;i++) {
1412 Double_t alfa0, newalfa, newx, newy,primo, ultimo ;
1413 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
1416 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1419 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
1420 if (icode>1000000000) carica = 1.;
1421 else carica = fParticle->Charge()/3. ;
1426 aaa =
sqrt( Px*Px + Py*Py);
1427 if(
fabs(carica) > 0.1 ){
1428 Rr = aaa*1000./(BFIELD*
CVEL);
1430 Cx = Oxx + Py*1000./(BFIELD*CVEL*carica);
1431 Cy = Oyy - Px*1000./(BFIELD*CVEL*carica);
1434 primo=alfa0 =
atan2(Oyy-Cy, Oxx-Cx);
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){
1442 if(primo > ultimo ) { primo = ultimo; ultimo = alfa0;};
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);
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.) {
1467 }
else if(time2>0.&&time1<0.){
1470 }
else if (time1>0. && time2<0.) {
1483 fprintf(MACRO,
"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1485 fprintf(MACRO,
"MCneut%d->SetLineStyle(2);\n",i);
1486 fprintf(MACRO,
"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
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.) {
1494 }
else if(time2>0.&&time1<0.){
1496 }
else if (time1>0. && time2<0.) {
1499 y2= time2>time1 ? ymax : ymin ;
1501 fprintf(MACRO,
"TLine* MCneut%d = new TLine(%f,%f,%f,%f);\n",
1503 fprintf(MACRO,
"MCneut%d->SetLineStyle(2);\n",i);
1504 fprintf(MACRO,
"MCneut%d->SetLineColor(3);\nMCneut%d->Draw(\"only\");\n"
1521 fprintf(MACRO,
"}\n");
1551 bool doMcComparison,
1560 Short_t nSciTilHits,
1561 Short_t nTracksFoundSoFar,
1591 delta, deltax, deltay,
1605 char nome[300], nome2[300];
1607 const double PI = 3.141592654;
1615 Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
1620 Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
1621 GAMM[nTracksFoundSoFar];
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);
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];
1655 for( i=0; i< Nhits; i++) {
1657 if( info->
at(i*7+5) == 1 ) {
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];
1671 if( xmin > 0. ) xmin = 0.;
1672 if( xmax < 0.) xmax = 0.;
1673 if( ymin > 0. ) ymin = 0.;
1674 if( ymax < 0.) ymax = 0.;
1677 deltay = ymax - ymin;
1679 if( deltax > deltay) {
1680 ymin -= 0.5*(deltax-deltay);
1681 ymax = ymin+ deltax;
1684 xmin -= 0.5*(deltay-deltax);
1685 xmax = xmin+ deltay;
1689 xmax = xmax + delta*0.15;
1690 xmin = xmin - delta*0.15;
1692 ymax = ymax + delta*0.15;
1693 ymin = ymin - delta*0.15;
1697 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
1698 xmin,ymin,xmax,ymax);
1703 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1709 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
1719 x2=
cos(ff)/RSTRAWDETECTORMIN;
1720 y2=
sin(ff)/RSTRAWDETECTORMIN;
1722 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
1728 double RMAXSCITIL=50.;
1731 x1=
cos(ff)/RMAXSCITIL;
1732 y1=
sin(ff)/RMAXSCITIL;
1735 fprintf(MACRO,
"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
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");
1751 for( i=0; i< Nhits; i++) {
1753 if( info->
at(i*7+5) == 1 ) {
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);
1763 for( i=0; i< nSciTilHits; i++) {
1770 posizSciTil->
at(i*3+0),
1771 posizSciTil->
at(i*3+1),
1783 for(i=0; i<nTracksFoundSoFar; i++){
1784 if(!keepit->
at(i))
continue;
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.) {
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);
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);
1812 if(
fabs(BETA[i]) < 1.e-10){
1813 if(
fabs(ALFA[i])<1.e-10) {
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);
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);
1839 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
1841 for(i=0;i<nMCTracks; i++){
1843 if ( ! pMC )
continue;
1849 aaa =
sqrt( Px*Px + Py*Py);
1850 Rr = aaa*1000./(BFIELD*
CVEL);
1851 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
1852 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
1853 if (icode>1000000000) carica = 1.;
1854 else carica = fParticle->Charge()/3. ;
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) {
1861 yl = xmin*(-Cx/Cy) + 0.5/Cy;
1862 yu = xmax*(-Cx/Cy) + 0.5/Cy;
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);
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);
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);
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);
1894 fprintf(MACRO,
"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
1903 fprintf(MACRO,
"}\n");
1931 bool doMcComparison,
1938 Short_t nMvdPixelHit,
1939 Short_t nMvdStripHit,
1940 Short_t nSciTilHits,
1941 Short_t nTracksFoundSoFar,
1971 delta, deltax, deltay,
1985 char nome[300], nome2[300];
1987 const double PI = 3.141592654;
1995 Double_t oX[Nhits], oY[Nhits], Radi[Nhits];
2002 VPixel[nMvdPixelHit],
2003 PRadius[nMvdPixelHit],
2004 UStrip[nMvdStripHit],
2005 VStrip[nMvdStripHit],
2006 SRadius[nMvdStripHit];
2017 Double_t ALF[nTracksFoundSoFar],BET[nTracksFoundSoFar],
2018 GAMM[nTracksFoundSoFar];
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);
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];
2052 for( i=0; i< Nhits; i++) {
2054 if( info->
at(i*7+5) == 1 ) {
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];
2072 pseudoRadius = 0.01 ;
2074 for( i=0; i< nMvdPixelHit; i++) {
2078 CC = XMvdPixel->
at(i)*XMvdPixel->
at(i) + YMvdPixel->
at(i)*YMvdPixel->
at(i);
2080 gamma = CC - pseudoRadius*pseudoRadius;
2081 PixelU[
i] = XMvdPixel->
at(i) / gamma;
2082 PixelV[
i] = YMvdPixel->
at(i) / gamma;
2083 RadiusP[
i] = pseudoRadius/gamma;
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];
2093 for( i=0; i< nMvdStripHit; i++) {
2097 CC = XMvdStrip->
at(i)*XMvdStrip->
at(i) + YMvdPixel->
at(i)*YMvdStrip->
at(i);
2099 gamma = CC - pseudoRadius*pseudoRadius;
2100 StripU[
i] = XMvdStrip->
at(i) / gamma;
2101 StripV[
i] = YMvdStrip->
at(i) / gamma;
2102 RadiusS[
i] = pseudoRadius/gamma;
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];
2113 if( xmin > 0. ) xmin = 0.;
2114 if( xmax < 0.) xmax = 0.;
2115 if( ymin > 0. ) ymin = 0.;
2116 if( ymax < 0.) ymax = 0.;
2119 deltay = ymax - ymin;
2121 if( deltax > deltay) {
2122 ymin -= 0.5*(deltax-deltay);
2123 ymax = ymin+ deltax;
2126 xmin -= 0.5*(deltay-deltax);
2127 xmax = xmin+ deltay;
2131 xmax = xmax + delta*0.15;
2132 xmin = xmin - delta*0.15;
2134 ymax = ymax + delta*0.15;
2135 ymin = ymin - delta*0.15;
2139 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
2140 xmin,ymin,xmax,ymax);
2145 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2151 "TEllipse* Griglia%d = new TEllipse(0.,0.,%f,%f,0.,360.);\nGriglia%d->SetLineColor(4);\nGriglia%d->Draw();\n",
2161 x2=
cos(ff)/RSTRAWDETECTORMIN;
2162 y2=
sin(ff)/RSTRAWDETECTORMIN;
2164 "TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(4);\nSeg%d->Draw();\n",
2170 double RMAXSCITIL=50.;
2173 x1=
cos(ff)/RMAXSCITIL;
2174 y1=
sin(ff)/RMAXSCITIL;
2177 fprintf(MACRO,
"TLine* Seg%d = new TLine(%f,%f,%f,%f);\nSeg%d->SetLineColor(6);\nSeg%d->Draw();\n",
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");
2193 for( i=0; i< Nhits; i++) {
2195 if( info->
at(i*7+5) == 1 ) {
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);
2205 for( i=0; i< nMvdPixelHit; i++) {
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);
2217 for( i=0; i< nMvdStripHit; i++) {
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);
2226 for( i=0; i< nSciTilHits; i++) {
2233 posizSciTil->
at(i*3+0),
2234 posizSciTil->
at(i*3+1),
2246 for(i=0; i<nTracksFoundSoFar; i++){
2247 if(!keepit->
at(i))
continue;
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.) {
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);
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);
2275 if(
fabs(BETA[i]) < 1.e-10){
2276 if(
fabs(ALFA[i])<1.e-10) {
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);
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);
2302 Double_t Rr, Oxx, Oyy, Cx, Cy, Px, Py, carica ;
2304 for(i=0;i<nMCTracks; i++){
2306 if ( ! pMC )
continue;
2312 aaa =
sqrt( Px*Px + Py*Py);
2313 Rr = aaa*1000./(BFIELD*
CVEL);
2314 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2315 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
2316 if (icode>1000000000) carica = 1.;
2317 else carica = fParticle->Charge()/3. ;
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) {
2324 yl = xmin*(-Cx/Cy) + 0.5/Cy;
2325 yu = xmax*(-Cx/Cy) + 0.5/Cy;
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);
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);
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);
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);
2357 fprintf(MACRO,
"MCcerchio%d->SetFillStyle(0);\nMCcerchio%d->SetLineStyle(2);\nMCcerchio%d->SetLineWidth(1);\nMCcerchio%d->Draw();\n",
2366 fprintf(MACRO,
"}\n");
2404 Short_t charge = In_Put.
Charge[iTrack] ;
2411 int IVOLTE = In_Put.
IVOLTE ;
2435 Short_t nSkewCommon = In_Put.
nSkewCommon[iTrack] ;
2457 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
2462 Int_t
i, j, i1, ii, iii, index, STATUS, imc, Nmin, Nmax;
2468 zmin, zmax, zmin2, zmax2, Smin, Smax,
2470 vx1, vy1, vz1, C0x1, C0y1, C0z1,
2472 distance, Rx, Ry, LL,
2473 Aellipsis1, Bellipsis1,fi1,
2475 SkewInclWithRespectToS,
2489 char nome2[300],nome[300];
2491 sprintf(nome,
"MacroSttMvdSZwithMCEvent%dT%d", IVOLTE,iNome);
2492 sprintf(nome2,
"%s.C",nome);
2493 MACRO = fopen(nome2,
"w");
2494 fprintf(MACRO,
"{\n");
2502 if( nSciTilHitsinTrack[iTrack]+nSkewHitsinTrack[iTrack]+
2503 nPixelHitsinTrack[iTrack]+
2504 nStripHitsinTrack[iTrack] == 1)
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];
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];
2537 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2538 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
2540 aaa =
sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2551 if(STATUS < 0 ) continue ;
2552 for( ii=0; ii<2; ii++){
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)
2559 Rx = POINTS1[j]-Oxx ;
2560 Ry = POINTS1[1+j]-Oyy ;
2562 aaa =
sqrt(Rx*Rx+Ry*Ry);
2563 SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2564 SkewInclWithRespectToS /= Rr;
2565 bbb =
sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2568 LL =
fabs(vx1*Rx + vy1*Ry);
2569 if( LL < 1.e-10)
continue;
2570 Aellipsis1 = info[i*7+3]*aaa/LL;
2572 Bellipsis1 = info[i*7+3]/Rr;
2574 if( distance >= info[i*7+4] + Aellipsis1)
continue;
2578 fi1 =
atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ;
2579 if( fi1 < 0.) fi1 += 2.*
PI;
2581 if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2582 if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2584 if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2585 if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
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]);
2606 if(STATUS < 0 ) continue ;
2608 for( ii=0; ii<2; ii++){
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)
2616 if(dist[0]>dist[1]) ii=1;
else ii=0;
2618 distance = dist[ii];
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)
2629 Rx = POINTS1[j]-Oxx ;
2630 Ry = POINTS1[1+j]-Oyy ;
2632 aaa =
sqrt(Rx*Rx+Ry*Ry);
2633 SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2634 SkewInclWithRespectToS /= Rr;
2635 bbb =
sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2638 LL =
fabs(vx1*Rx + vy1*Ry);
2639 if( LL < 1.e-10)
continue;
2640 Aellipsis1 = info[i*7+3]*aaa/LL;
2642 Bellipsis1 = info[i*7+3]/Rr;
2644 fi1 =
atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ;
2645 if( fi1 < 0.) fi1 += 2.*
PI;
2647 if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2648 if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2650 if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2651 if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2665 for(i=0; i<nPixelHitsinTrack[iTrack];i++){
2666 ii=ListPixelHitsinTrack[iTrack*MAXMVDPIXELHITSINTRACK+
i];
2668 if( zmin > ZMvdPixel[ ii ] )
2669 zmin = ZMvdPixel[ ii ];
2670 if( zmax < ZMvdPixel[ii ] )
2671 zmax = ZMvdPixel[ii ];
2673 esse =
atan2( YMvdPixel[ ii ]-Oyy,
2674 XMvdPixel[ ii ]-Oxx);
2675 if(esse<0.) esse +=2.*
PI;
2679 if( Smin > esse ) Smin = esse;
2680 if( Smax < esse ) Smax = esse;
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 ];
2692 esse =
atan2( YMvdStrip[ ii ]-Oyy,
2693 XMvdStrip[ ii ]-Oxx);
2694 if(esse<0.) esse +=2.*
PI;
2698 if( Smin > esse ) Smin = esse;
2699 if( Smax < esse ) Smax = esse;
2704 for(i=0; i<nMCMvdPixelAlone;i++){
2707 if( zmin > ZMvdPixel[ ii ] )
2708 zmin = ZMvdPixel[ ii ];
2709 if( zmax < ZMvdPixel[ii ] )
2710 zmax = ZMvdPixel[ii ];
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;
2722 for(i=0; i<nMCMvdStripAlone;i++){
2724 if( zmin > ZMvdStrip[ ii ] )
2725 zmin = ZMvdStrip[ ii ];
2726 if( zmax < ZMvdStrip[ii ] )
2727 zmax = ZMvdStrip[ii ];
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;
2737 if( zmax >= zmin && Smax >= Smin ) {
2749 if(Smax > 2.*PI) Smax = 2.*
PI;
2750 if( Smin < 0.) Smin = 0.;
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);
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");
2777 for(i=0;i<nSciTilHitsinTrack[iTrack];i++){
2778 j=ListSciTilHitsinTrack[iTrack*MAXSCITILHITSINTRACK+
i];
2818 for( iii=0; iii< nSkewHitsinTrack[iTrack]; iii++) {
2819 i = ListSkewHitsinTrack[iTrack*MAXSTTHITSINTRACK+iii] ;
2822 aaa =
sqrt(WDX[i]*WDX[i]+WDY[i]*WDY[i]+ WDZ[i]*WDZ[i]);
2833 if(STATUS < 0 ) continue ;
2834 for( ii=0; ii<2; ii++){
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)
2841 Rx = POINTS1[j]-Oxx ;
2842 Ry = POINTS1[1+j]-Oyy ;
2844 aaa =
sqrt(Rx*Rx+Ry*Ry);
2845 SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2846 SkewInclWithRespectToS /= Rr;
2847 bbb =
sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2850 Tiltdirection1[0] = vz1/bbb;
2851 Tiltdirection1[1] = SkewInclWithRespectToS/bbb;
2853 Tiltdirection1[0] = 1.;
2854 Tiltdirection1[1] = 0.;
2857 LL =
fabs(vx1*Rx + vy1*Ry);
2858 if( LL < 1.e-10)
continue;
2859 Aellipsis1 = info[i*7+3]*aaa/LL;
2861 Bellipsis1 = info[i*7+3]/Rr;
2863 if( distance >= info[i*7+4] + Aellipsis1)
continue;
2869 fi1 =
atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ;
2870 if( fi1 < 0.) fi1 += 2.*
PI;
2872 if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2873 if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2875 if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2876 if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
2879 Double_t rotation1 = 180.*
atan2(Tiltdirection1[1],Tiltdirection1[0])/
PI;
2885 for( i1=0; i1<nSkewCommon; i1++){
2886 if ( SkewCommonList[iTrack*MAXSTTHITSINTRACK +i1] == i ){
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);
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);
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]);
2928 if(STATUS < 0 ) continue ;
2931 for( ii=0; ii<2; ii++){
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)
2939 if(dist[0]>dist[1]) ii=1;
else ii=0;
2941 distance = dist[ii];
2946 Rx = POINTS1[j]-Oxx ;
2947 Ry = POINTS1[1+j]-Oyy ;
2949 aaa =
sqrt(Rx*Rx+Ry*Ry);
2950 SkewInclWithRespectToS = (-Ry*vx1 + Rx*vy1)/aaa ;
2951 SkewInclWithRespectToS /= Rr;
2952 bbb =
sqrt( SkewInclWithRespectToS*SkewInclWithRespectToS + vz1*vz1);
2955 Tiltdirection1[0] = vz1/bbb;
2956 Tiltdirection1[1] = SkewInclWithRespectToS/bbb;
2958 Tiltdirection1[0] = 1.;
2959 Tiltdirection1[1] = 0.;
2962 LL =
fabs(vx1*Rx + vy1*Ry);
2963 if( LL < 1.e-10)
continue;
2964 Aellipsis1 = info[i*7+3]*aaa/LL;
2966 Bellipsis1 = info[i*7+3]/Rr;
2968 fi1 =
atan2(POINTS1[j+1]-Oyy, POINTS1[j]-Oxx) ;
2969 if( fi1 < 0.) fi1 += 2.*
PI;
2971 if( zmin > POINTS1[j+2] - Aellipsis1 ) zmin = POINTS1[j+2] - Aellipsis1;
2972 if( zmax < POINTS1[j+2] + Aellipsis1 ) zmax = POINTS1[j+2] + Aellipsis1;
2974 if( Smin > fi1 - Bellipsis1 ) Smin = fi1 - Bellipsis1;
2975 if( Smax < fi1 + Bellipsis1 ) Smax = fi1 + Bellipsis1;
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",
2981 i,ii,POINTS1[j+2],Rr*fi1,Aellipsis1,Rr*Bellipsis1,rotation1,i,ii);
2984 fprintf(MACRO,
"AloneSkew%d_%d->SetLineColor(4);\n",i,ii);
2985 fprintf(MACRO,
"AloneSkew%d_%d->Draw();\n",i,ii);
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 ];
3006 esse =
atan2( YMvdPixel[ ii ]-Oyy,
3007 XMvdPixel[ ii ]-Oxx);
3008 if(esse<0.) esse +=2.*
PI;
3012 if( Smin > esse ) Smin = esse;
3013 if( Smax < esse ) Smax = esse;
3017 for(
int k=0; k<nMvdPixelCommon;k++){
3018 if( MvdPixelCommonList[iTrack*MAXMVDPIXELHITSINTRACK+k]== ii){
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);
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);
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 ];
3042 esse =
atan2( YMvdStrip[ ii ]-Oyy,
3043 XMvdStrip[ ii ]-Oxx);
3044 if(esse<0.) esse +=2.*
PI;
3048 if( Smin > esse ) Smin = esse;
3049 if( Smax < esse ) Smax = esse;
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);
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);
3072 for(i=0; i<nMCMvdPixelAlone;i++){
3075 if( zmin > ZMvdPixel[ ii ] )
3076 zmin = ZMvdPixel[ ii ];
3077 if( zmax < ZMvdPixel[ii ] )
3078 zmax = ZMvdPixel[ii ];
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);
3093 for(i=0; i<nMCMvdStripAlone;i++){
3095 if( zmin > ZMvdStrip[ ii ] )
3096 zmin = ZMvdStrip[ ii ];
3097 if( zmax < ZMvdStrip[ii ] )
3098 zmax = ZMvdStrip[ii ];
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;
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);
3122 if( -KAPPA*charge>0.) {
3124 cout<<
"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3125 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3132 cout<<
"da WriteMacroSkewAssociatedHitswithMC, questa traccia"
3133 <<
" e' inconsistente col proprio Pz, non plottata!\n";
3144 fmin = KAPPA*zmin + FI0;
3145 fmax = KAPPA*zmax + FI0;
3147 fmax = KAPPA*zmin + FI0;
3148 fmin = KAPPA*zmax + FI0;
3151 Nmax = (int) (0.5*fmax/ PI);
3153 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3156 Nmin = (int) (0.5*fmin/ PI);
3158 Nmin = ((int) (0.5*fmin/ PI) )-1;
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";
3164 for(i=Nmin; i<= Nmax;i++){
3166 z1 = (i*2.*PI-FI0)/KAPPA;
3167 z2 = ((i+1)*2.*PI-FI0)/KAPPA;
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);
3186 imc= daTrackFoundaTrackMC ;
3190 Double_t Fifi, Kakka, o_x, o_y, Cx, Cy, Px, Py, carica ;
3199 aaa =
sqrt( Px*Px + Py*Py);
3201 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
3202 if (icode>1000000000) carica = 1.;
3203 else carica = fParticle->Charge()/3. ;
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);
3208 if(Fifi<0.) Fifi += 2.*
PI;
3210 else Kakka = -carica*0.001*BFIELD*CVEL/pMC->
GetMomentum().Z();
3212 FI0 = fmod(Fifi+ PI, 2.*PI);
3214 fmin = KAPPA*zmin + FI0;
3215 fmax = KAPPA*zmax + FI0;
3217 fmax = KAPPA*zmin + FI0;
3218 fmin = KAPPA*zmax + FI0;
3221 Nmax = (int) (0.5*fmax/ PI);
3223 Nmax = ( (int) (0.5*fmax/ PI) ) -1;
3226 Nmin = (int) (0.5*fmin/ PI);
3228 Nmin = ((int) (0.5*fmin/ PI) )-1;
3231 for(i=Nmin; i<= Nmax;i++){
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);
3247 fprintf(MACRO,
"}\n");
3272 Short_t daSttTrackaMCTrack,
3273 Short_t nMvdPixelHitsAssociatedToSttTra,
3274 Short_t nMvdStripHitsAssociatedToSttTra,
3275 Short_t nSkewHitsinTrack
3325 "daTrackFoundaTrackMC") ;
3336 int IVOLTE = In_Put.
IVOLTE;
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");
3486 fprintf(MACRO,
"TCanvas* my= new TCanvas();\nmy->Range(%f,%f,%f,%f);\n",
3487 xmin,ymin,xmax,ymax);
3494 sprintf(myname,
"InnerPar");
3495 DrawBiHexagonInMacro(
3499 APOTEMAMAXINNERPARSTRAW,
3505 sprintf(myname,
"Skew");
3506 DrawBiHexagonInMacro(
3509 APOTEMAMINSKEWSTRAW,
3510 APOTEMAMAXSKEWSTRAW,
3516 sprintf(myname,
"OuterPar");
3517 DrawHexagonCircleInMacro(
3520 APOTEMAMINOUTERPARSTRAW,
3536 posizSciTil.
at(j*3+0),
3537 posizSciTil.
at(j*3+1),
3550 posizSciTil.
at(j*3+0),
3551 posizSciTil.
at(j*3+1),
3564 posizSciTil.
at(j*3+0),
3565 posizSciTil.
at(j*3+1),
3576 fprintf(MACRO,
"TEllipse* FoundTrack = new TEllipse(%f,%f,%f,%f,%f,%f);\n"
3577 ,Oxx,Oyy,Rr,Rr,primoangolo,ultimoangolo);
3580 "FoundTrack->SetLineColor(2);\nFoundTrack->SetFillStyle(0);\nFoundTrack->Draw(\"only\");\n");
3583 disegnaAssiXY(MACRO,xmin,xmax,ymin,ymax);
3589 for( ii=0; ii< nParalCommon.
at(iTrack); ii++) {
3590 i = ParalCommonList.
at(iTrack*MAXSTTHITSINTRACK+ii) ;
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);
3596 for( ii=0; ii< nSpuriParinTrack.
at(iTrack); ii++) {
3597 i = ParSpuriList.
at(iTrack*MAXSTTHITSINTRACK+ii) ;
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);
3603 for( ii=0; ii< nMCParalAlone.
at(iTrack); ii++) {
3604 i = MCParalAloneList.
at(iTrack*In_Put.
nSttHit+ii) ;
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);
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));
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",
3622 fprintf(MACRO,
"CommonSkewHit%d->SetMarkerColor(1);\nCommonSkewHit%d->Draw();\n"
3629 fprintf(MACRO,
"TMarker* SpurSkewHit%d = new TMarker(%f,%f,%d);\n",
3631 fprintf(MACRO,
"SpurSkewHit%d->SetMarkerColor(2);\nSpurSkewHit%d->Draw();\n",ii,ii);
3636 for( ii=0; ii< nMCSkewAlone.
at(iTrack); ii++) {
3637 i = MCSkewAloneList.
at(iTrack*In_Put.
nSttHit+ii) ;
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);
3645 for( i=0; i< nMvdStripHitsAssociatedToSttTra; i++) {
3653 for(
int k=0; k<nMvdStripCommon.
at(iTrack);k++){
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",
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);
3673 for( ii=0; ii< nMCMvdStripAlone.
at(iTrack); ii++) {
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);
3681 for( i=0; i< nMvdPixelHitsAssociatedToSttTra; i++) {
3682 ii = ListMvdPixelHitsinTrack.
at(iTrack*MAXMVDPIXELHITSINTRACK+i);
3689 for(
int k=0; k<nMvdPixelCommon.
at(iTrack);k++){
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",
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);
3709 for( ii=0; ii< nMCMvdPixelAlone.
at(iTrack); ii++) {
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);
3717 if( daSttTrackaMCTrack>-1 ) {
3719 Double_t r_r, o_x, o_y, Cx, Cy, Px, Py, carica ;
3721 im=daSttTrackaMCTrack;
3729 aaa =
sqrt( Px*Px + Py*Py);
3730 r_r = aaa*1000./(BFIELD*
CVEL);
3731 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
3732 TParticlePDG *
fParticle= fdbPDG->GetParticle(icode);
3733 if (icode>1000000000) carica = 1.;
3734 else carica = fParticle->Charge()/3. ;
3735 if (
fabs(carica)>=0.1 ){
3736 Cx = o_x + Py*1000./(BFIELD*CVEL*carica);
3737 Cy = o_y - Px*1000./(BFIELD*CVEL*carica);
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);
3745 fprintf(MACRO,
"}\n");
const Double_t RSTRAWDETECTORMAX
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sqrt(const F32vec4 &a)
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)
friend F32vec4 sin(const F32vec4 &a)
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)
TVector3 GetMomentum() const
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)
void WriteAllMacros(PndTrkPlotMacros_InputData In_Put)
const Double_t APOTEMAMINSKEWSTRAW
void WriteMacroSkewAssociatedHitswithMC(Double_t *ESSE, Double_t *ESSEalone, PndTrkPlotMacros_InputData In_Put, int iNome, int iTrack)
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 DrawBiHexagonInMacro(Double_t vgap, FILE *MACRO, Double_t Ami, Double_t Ama, Short_t color, char *name)
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)
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])
TVector3 GetStartVertex() const
const Double_t APOTEMAMAXSKEWSTRAW
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)
ClassImp(PndTrkPlotMacros)
void DrawHexagonCircleInMacro(Double_t GAP, FILE *MACRO, Double_t ApotemaMin, Double_t Rma, Short_t color, char *name)
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 disegnaAssiXY(FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
const Double_t DIMENSIONSCITIL