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 Tue Jul 16 16:58:02 2013 for ARA ROOT v3.10 Software by
