Pregunta

Tengo algún código que se carga en un archivo raíz desde el cual puedo extraer las sucursales de dicho archivo raíz y histogramas de trazado, etc. El código se ve algo así:

void MakePlots(string filename) {
    TChain Data("clusters");
    Data.Add(filename.c_str());

    Double_t rr, rx, ry, rz, rrho, rtheta, rphi;

    Data.SetBranchAddress("laben.recon.r", &rr);
    Data.SetBranchAddress("laben.recon.rho", &rrho);
    Data.SetBranchAddress("laben.recon.latitude", &rtheta);
    Data.SetBranchAddress("laben.recon.longitude", &rphi);
    Data.SetBranchAddress("laben.recon.z", &rz);
    Data.SetBranchAddress("laben.recon.y", &ry);
    Data.SetBranchAddress("laben.recon.x", &rx);

    int NumEvents = Data.GetEntries();

    for(int event = 0; event < NumEvents; event++) {
        if(event % 1000 == 0) cout << "Processing Event " << event << endl;
        Data.GetEvent(event);
    }
}

Esto funciona bien y dandy solo para cargarla en un archivo y hacer parcelas de ese archivo.Sin embargo, me gustaría cargar en los archivos n y hacer las mismas operaciones.Más específicamente, si tengo un directorio lleno de todos los archivos raíz que quiero cargar, ¿puedo escribir un programa que cargue cada archivo de ese directorio?Cualquier ayuda será apreciada.

¿Fue útil?

Solución

Usted carga múltiples archivos utilizando una llamada repetida de datos.add (...):

Data.Add("file1.root");
Data.Add("file2.root");
...

Data.Add("fileN.root");

Entonces deberías llamar:

Data.GetEntries();

que inicializa el tchain.Después de eso, configura las direcciones de la sucursal, etc. Nota: Cuando llame:

TChain Data("clusters");

El parámetro "Clusters" es el nombre de TTREE y que debe ser el mismo en todos los archivos que agrega.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top