ARA ROOT v3.8 Software

utilities/Atri/makeAtriSensorHkTree.cxx

00001 #include <cstdio>
00002 #include <fstream>
00003 #include <iostream>
00004 #include <zlib.h>
00005 #include <libgen.h>     
00006 #include <stdlib.h>
00007  
00008 using namespace std;
00009 
00010 #include "TTree.h"
00011 #include "TFile.h"
00012 #include "TSystem.h"
00013 
00014 #define HACK_FOR_ROOT
00015 
00016 #include "AraGeomTool.h"
00017 #include "araAtriStructures.h"
00018 #include "AtriSensorHkData.h"  
00019 
00020 void processHk();
00021 void makeHkTree(char *inputName, char *outDir);
00022 
00023 AraSensorHk_t theSensorHkStruct;
00024 TFile *theFile;
00025 TTree *sensorHkTree;
00026 AtriSensorHkData *theSensorHk=0;
00027 char outName[FILENAME_MAX];
00028 UInt_t realTime;
00029 Int_t runNumber;
00030 Int_t lastRunNumber;
00031 Int_t stationIdInt;
00032 AraStationId_t stationId;
00033 
00034 
00035 int main(int argc, char **argv) {
00036   if(argc<3) {
00037     std::cout << "Usage: " << basename(argv[0]) << " <file list> <out dir>" << std::endl;
00038     return -1;
00039   }
00040   if(argc>=4) 
00041     runNumber=atoi(argv[3]);
00042   if(argc>=5) {
00043     stationIdInt=atoi(argv[4]);  //To override station id
00044     stationId=AraGeomTool::getAtriStationId(stationIdInt);
00045   }
00046   makeHkTree(argv[1],argv[2]);
00047   return 0;
00048 }
00049   
00050 
00051 void makeHkTree(char *inputName, char *outFile) {
00052   cout << inputName << "\t" << outFile << endl;
00053   strncpy(outName,outFile,FILENAME_MAX);
00054   theSensorHk = new AtriSensorHkData();
00055   //    cout << sizeof(AraSensorHk_t) << endl;
00056   ifstream SillyFile(inputName);
00057 
00058   int numBytes=0;
00059   char fileName[180];
00060   int error=0;
00061   //    int eventNumber=1;
00062   int counter=0;
00063   while(SillyFile >> fileName) {
00064     if(counter%100==0) 
00065       cout << fileName << endl;
00066     counter++;
00067     
00068     //    const char *subDir = gSystem->DirName(fileName);
00069     //    const char *subSubDir = gSystem->DirName(subDir);
00070     //    const char *eventDir = gSystem->DirName(subSubDir);
00071     //    const char *runDir = gSystem->DirName(eventDir);
00072     //    const char *justRun = gSystem->BaseName(runDir);
00073     //  cout << justRun << endl;
00074     //    sscanf(justRun,"run%d",&runNumber);
00075     
00076     gzFile infile = gzopen (fileName, "rb");    
00077     //    std::cout << "gzeof: " << gzeof(infile) << "\n";
00078     for(int i=0;i<1000;i++) {   
00079       //      cout << i << endl;
00080       numBytes=gzread(infile,&theSensorHkStruct,sizeof(AraSensorHk_t));
00081       //      std::cout << numBytes << "\n";
00082 
00083 
00084         if(stationIdInt!=0)
00085            theSensorHkStruct.gHdr.stationId=stationId;
00086 
00087 
00088       if(numBytes==0) break;
00089       if(numBytes!=sizeof(AraSensorHk_t)) {
00090         if(numBytes)
00091           cerr << "Read problem: " <<numBytes << " of " << sizeof(AraSensorHk_t) << endl;
00092         error=1;
00093         break;
00094       }
00095       cout << "Hk: " << theSensorHkStruct.unixTime << endl;
00096       processHk();
00097     }
00098     gzclose(infile);
00099     //  if(error) break;
00100   }
00101   if(sensorHkTree)
00102     sensorHkTree->AutoSave();
00103   //    theFile->Close();
00104 }
00105 
00106 
00107 void processHk() {
00108   //  cout << "processHk:\t" << theSensorHkStruct.eventNumber << endl;
00109   static int doneInit=0;
00110   
00111   if(!doneInit) {
00112     //    char dirName[FILENAME_MAX];
00113     //    char fileName[FILENAME_MAX];
00114     //    sprintf(dirName,"%s/run%d",outDirName,runNumber);
00115     //    gSystem->mkdir(dirName,kTRUE);
00116     //    sprintf(fileName,"%s/eventFile%d.root",dirName,runNumber);
00117     cout << "Creating File: " << outName << endl;
00118     theFile = new TFile(outName,"RECREATE");
00119     sensorHkTree = new TTree("sensorHkTree","Tree of ARA Hks");
00120     sensorHkTree->Branch("run",&runNumber,"run/I");
00121     sensorHkTree->Branch("sensorHk","AtriSensorHkData",&theSensorHk);
00122     
00123     doneInit=1;
00124   }  
00125   //  cout << "Here: "  << theSensorHk.eventNumber << endl;
00126   if(theSensorHk) delete theSensorHk;
00127   theSensorHk = new AtriSensorHkData(&theSensorHkStruct);
00128   sensorHkTree->Fill();  
00129   lastRunNumber=runNumber;
00130   //  delete theSensorHk;
00131 }

Generated on Mon Jun 3 14:59:47 2013 for ARA ROOT v3.8 Software by doxygen 1.4.7