int main(int argc, char ** argv) { TStopwatch comulativeWatch; comulativeWatch.Start(true); readInputs(argc,argv); cout<<"Currrent Subversion Revision: "<<SVN_REV<<endl; cout << "starting main loop.." << endl; RunListOK = ReadRunList(); if(!RunListOK)exit(-1); TSystem* sys = gSystem; std::string currentDir = sys->pwd(); for (unsigned int i = 0; i < RunParameters.size(); i++) { cout << RunParameters[i].getRunNumber(); if (i+1 < RunParameters.size()) cout << ", "; } cout << " will be analysed.." << endl; if (!RunListOK) return 0; /**Start with Analyising, read RunParameteres of the Run and start analysis with that parameters */ for (unsigned int i = 0; i < RunParameters.size(); i++) { TStopwatch runWatch; runWatch.Start(true); RunParameters[i].Print(); bool DO_ALIGNMENT = RunParameters[i].doAlignment(); bool DO_ALIGNMENTANALYSIS = RunParameters[i].doAlignmentAnalysis(); bool DO_TRANSPARENT_ANALYSIS = RunParameters[i].doTransparentAnalysis(); time_t rawtime; tm *timestamp; time (&rawtime); timestamp = gmtime(&rawtime); ostringstream logfilename; logfilename << "analyse_log_" << RunParameters[i].getRunNumber() << "_" << timestamp->tm_year << "-" << timestamp->tm_mon << "-" << timestamp->tm_mday << "." << timestamp->tm_hour << "." << timestamp->tm_min << "." << timestamp->tm_sec << ".log"; // // FILE *log; // log = freopen(logfilename.str().c_str(), "w", stdout); TSettings *settings = 0; cout<<"settings"<<endl; settings = new TSettings((TRunInfo*)&RunParameters[i]); TResults *currentResults =new TResults(settings); currentResults->Print(); TRawEventSaver *eventSaver; eventSaver = new TRawEventSaver(settings); eventSaver->saveEvents(RunParameters[i].getEvents()); delete eventSaver; //Calculate Pedestal sys->cd(currentDir.c_str()); TPedestalCalculation* pedestalCalculation; pedestalCalculation = new TPedestalCalculation(settings); pedestalCalculation->calculateSlidingPedestals(RunParameters[i].getEvents()); delete pedestalCalculation; if(RunParameters[i].doPedestalAnalysis()){ sys->cd(currentDir.c_str()); TAnalysisOfPedestal *analysisOfPedestal; analysisOfPedestal = new TAnalysisOfPedestal(settings); analysisOfPedestal->setResults(currentResults); analysisOfPedestal->doAnalysis(RunParameters[i].getEvents()); delete analysisOfPedestal; } THTMLGenerator *htmlGen = new THTMLGenerator(settings); htmlGen->setFileGeneratingPath(settings->getAbsoluteOuputPath(true)); htmlGen->setMainPath("./"); htmlGen->setSubdirPath(""); htmlGen->setFileName("overview.html"); htmlGen->addSection("Pedestal","<a href=\"./pedestalAnalysis/pedestal.html\">PEDESTAL</a>"); htmlGen->addSection("Clustering","<a href=\"./clustering/clustering.html\">CLUSTERING</a>"); htmlGen->addSection("Selection","<a href=\"./selections/selection.html\">SELECTION</a>"); htmlGen->addSection("Alignment","<a href=\"./alignment/alignment.html\">ALIGNMENT</a>"); htmlGen->addSection("Landau","<a href=\"./selectionAnalysis/landaus.html\">LANDAU-DISTRIBUTIONS</a>"); htmlGen->generateHTMLFile(); delete htmlGen; sys->cd(currentDir.c_str()); TClustering* clustering; clustering=new TClustering(settings);//int seedDetSigma=10,int hitDetSigma=7,int seedDiaSigma=5, int hitDiaSigma=3); clustering->ClusterEvents(RunParameters[i].getEvents()); delete clustering; if(RunParameters[i].doClusterAnalysis()){ sys->cd(currentDir.c_str()); TAnalysisOfClustering* analysisClustering; analysisClustering = new TAnalysisOfClustering(settings); analysisClustering->setResults(currentResults); analysisClustering->doAnalysis(RunParameters[i].getEvents()); delete analysisClustering; } sys->cd(currentDir.c_str()); TSelectionClass* selectionClass = new TSelectionClass(settings); selectionClass->SetResults(currentResults); selectionClass->MakeSelection(RunParameters[i].getEvents()); delete selectionClass; if(RunParameters[i].doSelectionAnalysis()){ sys->cd(currentDir.c_str()); TAnalysisOfSelection *analysisSelection=new TAnalysisOfSelection(settings); analysisSelection->doAnalysis(RunParameters[i].getEvents()); delete analysisSelection; } if (DO_ALIGNMENT){ sys->cd(currentDir.c_str()); TAlignment *alignment = new TAlignment(settings); // alignment->setSettings(settings); //alignment->PrintEvents(1511,1501); alignment->Align(RunParameters[i].getEvents()); delete alignment; } if(DO_ALIGNMENTANALYSIS){ sys->cd(currentDir.c_str()); TAnalysisOfAlignment *anaAlignment; anaAlignment=new TAnalysisOfAlignment(settings); anaAlignment->doAnalysis(RunParameters[i].getEvents()); delete anaAlignment; } if (DO_TRANSPARENT_ANALYSIS) { TTransparentAnalysis *transpAna; transpAna = new TTransparentAnalysis(settings); transpAna->setResults(currentResults); transpAna->analyze(RunParameters[i].getEvents(),RunParameters.at(i).getStartEvent()); delete transpAna; } if (settings && settings->doTransparentAlignmnet()){ sys->cd(currentDir.c_str()); TAlignment *alignment = new TAlignment(settings,TSettings::transparentMode); alignment->createTransparentEventVectors(RunParameters[i].getEvents()); // alignment->setSettings(settings); //alignment->PrintEvents(1511,1501); alignment->Align(RunParameters[i].getEvents(),0,TAlignment::diaAlignment); delete alignment; TTransparentAnalysis *transpAna; transpAna = new TTransparentAnalysis(settings,TSettings::transparentMode); transpAna->setResults(currentResults); transpAna->analyze(RunParameters[i].getEvents(),RunParameters.at(i).getStartEvent()); delete transpAna; } cout<<"PRINT RESULTS"<<endl; currentResults->Print(); cout<<"SAVE RESULTS"<<endl; // currentResults->saveResults(settings->getResultsRootFilePath()); TFile* file = new TFile (settings->getResultsRootFilePath().c_str(),"RECREATE"); file->Print(); file->ls(); file->SetName("fileName"); file->cd(); cout<<"KEYS: "<<file->GetNkeys()<<endl; file->GetListOfKeys()->Print(); cout<<"Write"<<endl; currentResults->Write("test"); cout<<"CLOSE FILE"<<endl; file->Close(); // if (currentResults){ // cout<<"DELETE RESULTS"<<endl; // delete currentResults; // cout<<"#"<<endl;; // } cout<<"saved results..."<<endl; runWatch.Stop(); cout<<"needed Time for Run "<<RunParameters[i].getRunNumber()<<":"<<endl; runWatch.Print(); cout<<"needed Time for Run "<<RunParameters[i].getRunNumber()<<":\n\t"<<flush; runWatch.Print(); if (settings!=NULL){ cout<<"delete Settings..."<<endl; delete settings; cout<<"DONE_SETTINGS"<<endl; } cout<<"DONE with Analysis of Run "<< RunParameters[i].getRunNumber(); cout<<": "<<i+1<<"/"<<RunParameters.size()<<endl; } cout<<"DONE with Analysis of all "<<RunParameters.size()<<" Runs from RunList.ini"<<endl; cout<<"total time for all analysis:\n\t"<<flush; cout<<"time for all analysis:"<<endl; comulativeWatch.Print(); cout<<"DONE_ALL"<<endl; return 0; }