...
 
Commits (11)
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *summary, *events;
int Ntracks = 5, Nevents = 5;
int numeros[Ntracks*Nevents][2], num[Ntracks*Nevents][2];
float p[Ntracks*Nevents][3], mass[Ntracks*Nevents], charge[Ntracks*Nevents];
float v[Ntracks*Nevents][3], B[Ntracks*Nevents];
int i = 0, j = 0, k = 0;
events = fopen("events_detail.txt","r");
summary = fopen("events_summary.txt","r");
for(i=0;i<Ntracks*Nevents;i++){ // inicializa as variaveis
numeros[i][0] = 0;
numeros[i][1] = 0;
num[i][0] = 0;
num[i][1] = 0;
p[i][0] = 0;
p[i][1] = 0;
p[i][2] = 0;
v[i][0] = 0;
v[i][1] = 0;
v[i][2] = 0;
mass[i] = 0;
charge[i] = 0;
B[i] = 0;
}
i = 0;
if(summary == NULL){
printf("deu erro em 1!!!\n\n");
return EXIT_FAILURE;
}
do{
if(numeros[i][0] < Nevents){
printf("chegou aqui!!! 1 \n\n");
fscanf(summary, "%d %d %f %f %f %f", &num[i][0], &num[i][1], v[i][0], v[i][1], v[i][2], B[i]);
}
i++;
}while(!feof(summary));
if(events == NULL){
printf("deu pau em 2!!!");
return EXIT_FAILURE;
}
do{
if(numeros[k][0] < Nevents){
j = 0;
printf("sera que chega até aqui??? 2 \n\n");
if(numeros[i][1] < num[i][1]){
fscanf(events, "%d %d %f %f %f %f %f", &numeros[j][0], &numeros[j][0], &p[j][0], &p[j][1], &p[j][2], &mass[j], &charge[j]);
j++;
}
k++;
}
}while(!feof(events));
fclose(events);
fclose(summary);
for(i=0;i<Nevents;i++){
while(num[i,0] == numeros[i,0]){
printf(" %d %d %f %f %f %f %f %f %f %f %f \n ", numeros[j][0], numeros[j][1], v[i][0], v[i][1], v[i][2], p[j][0], p[j][1], p[j][2], mass[j], charge[j], B[i]);
j++;
}
}
}
//gcc processa_dados.c -lm -o prog
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define c 1 // definição da velocidade da luz
int main(){
FILE *summary, *details;
FILE *paraanimacao;
int Ntracks = 20, Nevents = 1; //
int numeros[Ntracks*Nevents][2], num[Nevents][2]; // VARIAVEIS
float p[Ntracks*Nevents][3]; // NECESSARIAS
float mass[Ntracks*Nevents], charge[Ntracks*Nevents]; // PARA LER OS
float v[Nevents][3], B[Ntracks*Nevents]; // ARQUIVOS
int i = 0, j = 0, k = 0; //
float pt[Ntracks*Nevents], vt[Ntracks*Nevents];
float omega[Ntracks*Nevents], gamma[Ntracks*Nevents];
float vel[Ntracks*Nevents][3];
details = fopen("events_detail.txt","r"); // ABRE O ARQUIVO DE LEITURA DETAILS
summary = fopen("events_summary.txt","r"); // ABRE O ARQUIVO DE LEITURA SUMMARY
paraanimacao = fopen("events_animacao.txt","w"); // ABRE ARQUIVO PARA IMPRESSAO
for(i=0;i<Ntracks*Nevents;i++){ //
numeros[i][0] = 0; //
numeros[i][1] = 0; //
p[i][0] = 0; //
p[i][1] = 0; //
p[i][2] = 0; // INICIALIZA
mass[i] = 0; // AS VARIAVEIS
charge[i] = 0; // QUE SERAO
num[i][0] = 0; // LIDAS NOS ARQUIVOS
num[i][1] = 0; //
if(i < Nevents){ //
v[i][0] = 0; //
v[i][1] = 0; //
v[i][2] = 0; //
B[i] = 0; //
}
}
/*____________________LENDO ARQUIVO DO SUMARIO____________________*/
i = 0;
if(summary == NULL){ // ABRE O ARQUIVO E VERIFI-
printf("deu erro em 1!!!\n\n"); // CANDO SE OCORRE PROBLEMA
return EXIT_FAILURE; // NO ARQUIVO SUMMARY
}
for(k=0;k<Nevents*Nevents;k++){ // LOOP PARA LEITURA DAS VARIAVEIS
fscanf(summary, "%d %d %f %f %f %f", &num[i][0], &num[i][1], &v[i][0], &v[i][1], &v[i][2], &B[i]);
if(num[i][1] > Ntracks && i < Nevents){
//printf("Confirma Event -> Nevent=%d, Ntrack= %d \n\n", num[i][0], num[i][1]);
// SE NUMERO DE TRILHAS NO EVENTO FOR
i++; // MENOR QUE Ntracks ENTAO REPETE
}
}
fclose(summary); // FECHA ARQUIVO SUMMARY
/*____________________LENDO ARQUIVO DOS DETALHES____________________*/
//printf("\n\n\n\n");
if(details == NULL){ // ABRINDO ARQUIVO E VERIFI-
printf("deu erro em 2!!!"); // CANDO SE OCORRE PROBLEMA
return EXIT_FAILURE; // NO ARQUIVO DETAILS
}
for(i=0;i<Nevents;i++){ // LACO NOS EVENTOS PARA LER LINHAS DO ARQUIVO DETAILS
k = 0;
while(k < num[i][1]){ // LACO EM UMA VARIAVEL MUDA PARA LER CADA TRILHA DE CADA EVENTO
fscanf(details, "%d %d %f %f %f %f %f",&numeros[j][0], &numeros[j][1],&p[j][0],&p[j][1],&p[j][2],&mass[j],&charge[j]);
if(num[i][0]==numeros[j][0] && numeros[j][1]<Ntracks){ // SE O No DO EVENTO DE DETAILS
j++; // COINCIDIR COM O DO SUMMARY
} // E A TRACK FOR MENOR QUE Ntracks
k++; // ENTAO AVANCA j PARA LEITURA
}
}
fclose(details); // FECHA ARQUIVO DETAILS
/*_______________________PROCESSANDO OS DADOS________________________*/
//printf("\n\n\n\n");
for(i=0;i<Nevents;i++){
j = 0;
k = Ntracks*i;
while(j<Ntracks){
pt[k] = sqrt( pow(p[k][0],2) + pow(p[k][1],2) + pow(p[k][2],2 ));
// MOMENTO TOTAL
vt[k] = 1/sqrt( pow(mass[k]/pt[k],2) + 1/(c*c));
// VELOCIDADE RELATIVISTICA
gamma[k] = 1/sqrt( 1 - pow(vt[k],2));
// TRANSFORMAÇAO DE LORENTZ
omega[k] = charge[k]*B[i]/(mass[k]*gamma[k]);
//FREQUENCIA DE CICLOTRON
//printf("\nvel[%d] = %f -- gamma[%d] = %f -- Omega[%d] = %f\n\n",k,vt[k],k,gamma[k],k,omega[k]);
vel[k][0] = sqrt(1 - vt[k]*vt[k])*p[k][0]/mass[k];
vel[k][1] = sqrt(1 - vt[k]*vt[k])*p[k][1]/mass[k];
vel[k][2] = sqrt(1 - vt[k]*vt[k])*p[k][2]/mass[k];
fprintf(paraanimacao,"%d %f %f %f %f %f %f %f \n",i,v[i][0],v[i][1],v[i][2],vel[k][0],vel[k][1],vel[k][2], omega[k]);
j++;
k++;
}
}
fclose(paraanimacao);
}