--- quicklook/QLflightTmtc_Header/HeaderScan.cpp 2006/06/17 11:02:09 1.1.1.2 +++ quicklook/QLflightTmtc_Header/HeaderScan.cpp 2006/07/11 14:27:33 1.4 @@ -1,5 +1,5 @@ /** -* Header Scan +* Header_Scan * Author Nagni * version 1.0 * @@ -49,9 +49,10 @@ * Date 16 June 2006 - Malvezzi * * Description of changes: -* Implementation of case: numebr of events are <= 0. -* Remove of the graph "grPcktId1"; see PacketScan for the same information. -* Fixed bugs: for a large namber of events is not possible to have vectors, so all graphs have been converted in histograms +* Implementation of the case: numebr of events <= 0. +* Remove graph "grPcktId1"; see PacketScan for the same information. +* Fixed bugs: for a large namber of events is not possible to have vectors, so I have subsituted graphs with histograms +* or divided the graphs in more than one canvas. * */ @@ -83,20 +84,10 @@ { //------------------- Variables initilization -------------------------// - - TList *list = new TList; - Int_t numkey; - TObject *key = new TObject; - const char *name; - //TTree* tr = new TTree; - //TTree* tr1 = new TTree; - Long64_t nevents=0; // ev=0, events=0; - ULong_t lastime, firstime; + Long64_t nevents=0; + ULong_t lastime, firstime,obt;// offset, lastoffset, firstoffset; double obmin=0.; double obmax=0.; - double obt; - ULong_t maxoffset, minoffset; - Float_t pcktLenght =0., pcktCounter=0., offset=0., allCounter=0.; stringstream oss, oss1, oss2, oss3, noentries; //------- load root file -------------- TFile *file = new TFile(base.Data()); @@ -104,9 +95,6 @@ printf("No such file in the directory has been found"); return; } - if (outDir == "" ) outDir = "."; - list = file->GetListOfKeys(); //get list of trees in the file - numkey = file->GetNkeys(); //get number of trees in the file TTree *PhysicsTr = (TTree*)file->Get("Physics"); TBranch *headBr = PhysicsTr->GetBranch("Header"); @@ -117,7 +105,6 @@ PhysicsTr->SetBranchAddress("Header", &eh); nevents = headBr->GetEntries(); - const Int_t sizetot = nevents; TString filename = ((TObjString*)base.Tokenize('/')->Last())->GetString(); filename = ((TObjString*)filename.Tokenize('.')->First())->GetString(); @@ -156,92 +143,104 @@ return; } - - ///-------------- to know the max and min File Offset ----------------------------// - /*for (Int_t i=0; iAt(i); - name=(key->GetName()); - tr = (TTree*)file->Get(name); - if (tr->IsZombie()) continue; - events = tr->GetEntries(); - tr->SetBranchAddress("Header", &eh); - for (Int_t j = 0; j < events; j++){ - tr->GetEntry(j); - ph = eh->GetPscuHeader(); - ph->GetFileOffset(); - if(ph->GetFileOffset() <= minoffset) minoffset=ph->GetFileOffset(); - if(ph->GetFileOffset() >= maxoffset) maxoffset=ph->GetFileOffset(); - } - }*/ - //*************************** Histograms ************************************************************// + //-------------- to know the max and min OBT ----------------------------// + for (Int_t i = 0; i < nevents; i++){ + headBr->GetEntry(i); + ph = eh->GetPscuHeader(); + obt = ph->GetOrbitalTime(); + //if(obt <= firstime) firstime=obt; + if(obt >= lastime) lastime=obt; + } + //------------------------ First histogram -----------------------------------// - headBr->GetEntry(0); - ph = eh->GetPscuHeader(); - firstime = ph->GetOrbitalTime(); - headBr->GetEntry(nevents-1); - ph = eh->GetPscuHeader(); - lastime = ph->GetOrbitalTime(); - obmin=firstime; - obmax=lastime; + headBr->GetEntry(0); + ph = eh->GetPscuHeader(); + firstime = ph->GetOrbitalTime(); + obmin=firstime; + obmax=lastime; + oss1.str(""); - oss1 << filename.Data() << ": Physics Packet per minute;" <<" start @ " << firstime << ", end @ "<< lastime <<"ms"; + oss1 <<"File name= "<< filename.Data() <<". Start time= " << obmin << ", end time= "<< obmax <<" ms"<<". Physics Packet per minute"; Int_t nbin = (lastime-firstime)/60000; TH1F *h1 = new TH1F ("histo1", oss1.str().c_str(), nbin, obmin, obmax); - - //------------------------ Second histogram -----------------------------------// - oss2.str(""); - oss2 << filename.Data() << ": Lenght of Physic packets;"; - Int_t nint = (lastime-firstime); - TH1F *PcktLenght = new TH1F ("histo2", oss2.str().c_str(), nint, obmin, obmax); + + //------------- Graph PscuCounter vs FileOffset --------------------------------- + const Int_t size = 10000; + Int_t ev=0; + Double_t PscuCounter[size], FileOffset[size], tempo[size], PcktLenght[size]; + Int_t m=0; + Int_t pag= (nevents/10000)+1; - //------------------------ Third histogram -----------------------------------// - oss3.str(""); - oss3 << filename.Data() << ": Physics Counter"; - TH1F *PcktCounter = new TH1F ("histo3", oss3.str().c_str(), nint, obmin, obmax); + TMultiGraph *mg1 = new TMultiGraph(); + oss1.str(""); + oss1 << filename.Data() <<": PscuCounter vs FileOffset."; + mg1->SetTitle(oss1.str().c_str()); - //------------------------ Fourth histogram -----------------------------------// - /*oss3.str(""); - oss3 << filename.Data() << ": Packet Counter"; - Int_t nintoffset = (maxoffset-minoffset)/10; - TH1F *FileOffset = new TH1F ("histo4", oss3.str().c_str(), nintoffset, minoffset, maxoffset); - */ - //**************************************************************************************************// - //------- fill histograms ---------// + TMultiGraph *mg2 = new TMultiGraph(); + oss1.str(""); + oss1 << filename.Data() <<": OBT vs FileOffset."; + mg2->SetTitle(oss1.str().c_str()); - for (Int_t i = 0; i < nevents; i++){ - headBr->GetEntry(i); - ph = eh->GetPscuHeader(); - obt = ph->GetOrbitalTime(); - pcktLenght=ph->GetPacketLenght(); - pcktCounter=ph->GetCounter(); - h1->Fill(obt); - PcktLenght->Fill(obt,pcktLenght); - PcktCounter->Fill(obt,pcktCounter); - } + TMultiGraph *mg3 = new TMultiGraph(); + oss2.str(""); + oss2 << filename.Data() <<": Lenght of Physic packets"; + mg3->SetTitle(oss2.str().c_str()); + + TMultiGraph *mg4 = new TMultiGraph(); + oss3.str(""); + oss3 << filename.Data() <<": Physics Counter"; + mg4->SetTitle(oss3.str().c_str()); - /*for (Int_t i=0; iAt(i); - name=(char *)(key->GetName()); - tr1 = (TTree*)file->Get(name); - if (tr1->IsZombie()) continue; - tr1->SetBranchAddress("Header", &eh); - ev = tr1->GetEntries(); - for (Int_t j = 0; j < ev; j++){ - tr1->GetEntry(j); - ph = eh->GetPscuHeader(); - offset=ph->GetFileOffset(); - allCounter= ph->GetCounter(); - FileOffset->Fill(offset,allCounter); - } - }*/ - - //****************************** Canvases *******************************// - //TGaxis::SetMaxDigits(4); - //------------------- First Canvas --------------------------------// TCanvas *finalCanv1 = new TCanvas("Header_1", base, 1280, 1024); finalCanv1->Divide(1,3); finalCanv1->SetFillColor(10); + TCanvas *finalCanv2 = new TCanvas("Header_2", base, 1280, 1024); + finalCanv2->Divide(1,2); + finalCanv2->SetFillColor(10); + + /////ciclo sulle pagine//////////////////// + for (Int_t interval=0; intervalGetEntry(ev+l); + ph = eh->GetPscuHeader(); + PscuCounter[l]= ph->GetCounter(); // = PcktCounter[l] + FileOffset[l]=ph->GetFileOffset(); + tempo[l]=ph->GetOrbitalTime(); + PcktLenght[l]=ph->GetPacketLenght(); + h1->Fill(ph->GetOrbitalTime()); + m=l; + } + + TGraph *graph1= new TGraph(m, tempo, PcktLenght); + graph1->SetMarkerColor(2); + graph1->SetMarkerSize(.5); + graph1->SetMarkerStyle(21); + mg3->Add(graph1); + + TGraph *graph2= new TGraph(m, tempo, PscuCounter); + graph2->SetMarkerColor(4); + graph2->SetMarkerSize(.5); + graph2->SetMarkerStyle(21); + mg4->Add(graph2); + + TGraph *graph3= new TGraph(m, FileOffset, PscuCounter); + graph3->SetMarkerColor(3); + graph3->SetMarkerSize(.5); + graph3->SetMarkerStyle(21); + mg1->Add(graph3); + + TGraph *graph4= new TGraph(m, FileOffset, tempo); + graph4->SetMarkerColor(kBlue); + graph4->SetMarkerSize(.5); + graph4->SetMarkerStyle(21); + mg2->Add(graph4); + + ev=ev+10000; + } + //------------ First Canvas ---------------------// + finalCanv1->cd(1); h1->SetStats(kFALSE); h1->GetXaxis()->SetTitle("OBT (ms)"); @@ -254,89 +253,73 @@ h1->Draw(); finalCanv1->cd(2); - PcktLenght->SetStats(kFALSE); - PcktLenght->GetXaxis()->SetTitle("OBT (ms)"); - PcktLenght->GetXaxis()->CenterTitle(); - PcktLenght->GetXaxis()->SetLabelSize(0.04); - PcktLenght->GetYaxis()->SetTitle("Lenght (byte)"); - PcktLenght->GetYaxis()->CenterTitle(); - PcktLenght->GetYaxis()->SetLabelSize(0.04); - PcktLenght->GetYaxis()->SetTitleSize(0.06); - PcktLenght->GetYaxis()->SetTitleOffset(0.8); - PcktLenght->SetMarkerColor(2); - PcktLenght->SetMarkerSize(.5); - PcktLenght->SetMarkerStyle(21); - PcktLenght->Draw("9p"); + mg3->Draw("AP"); + mg3->GetXaxis()->SetTitle("OBT (ms)"); + mg3->GetXaxis()->CenterTitle(); + mg3->GetXaxis()->SetLabelSize(0.04); + mg3->GetYaxis()->SetTitle("Lenght (byte)"); + mg3->GetYaxis()->CenterTitle(); + mg3->GetYaxis()->SetLabelSize(0.04); + mg3->GetYaxis()->SetTitleSize(0.06); + mg3->GetYaxis()->SetTitleOffset(0.8); + finalCanv1->cd(3); - PcktCounter->SetStats(kFALSE); - PcktCounter->GetXaxis()->SetTitle("OBT (ms)"); - PcktCounter->GetXaxis()->SetTitleSize(0.05); - PcktCounter->GetXaxis()->CenterTitle(); - PcktCounter->GetXaxis()->SetLabelSize(0.04); - PcktCounter->GetYaxis()->SetTitle("Counter"); - PcktCounter->GetYaxis()->SetTitleSize(0.05); - PcktCounter->GetYaxis()->CenterTitle(); - PcktCounter->GetYaxis()->SetLabelSize(0.04); - PcktCounter->GetYaxis()->SetTitleSize(0.06); - PcktCounter->GetYaxis()->SetTitleOffset(0.8); - PcktCounter->SetMarkerColor(4); - PcktCounter->SetMarkerSize(.5); - PcktCounter->SetMarkerStyle(21); - PcktCounter->Draw("9p"); - //--------- Second Canvas -----------------------------// - /*TCanvas *finalCanv2 = new TCanvas("Header_2", base, 1280, 1024); - finalCanv2->Divide(1,2); - finalCanv2->SetFillColor(10); + mg4->Draw("AP"); + mg4->GetXaxis()->SetTitle("OBT (ms)"); + mg4->GetXaxis()->SetTitleSize(0.05); + mg4->GetXaxis()->CenterTitle(); + mg4->GetXaxis()->SetLabelSize(0.04); + mg4->GetYaxis()->SetTitle("Counter"); + mg4->GetYaxis()->SetTitleSize(0.05); + mg4->GetYaxis()->CenterTitle(); + mg4->GetYaxis()->SetLabelSize(0.04); + mg4->GetYaxis()->SetTitleSize(0.06); + mg4->GetYaxis()->SetTitleOffset(0.8); - finalCanv2->cd(1); - PcktCounter->SetStats(kFALSE); - PcktCounter->GetXaxis()->SetTitle("OBT (ms)"); - PcktCounter->GetXaxis()->SetTitleSize(0.05); - PcktCounter->GetXaxis()->CenterTitle(); - PcktCounter->GetXaxis()->SetLabelSize(0.04); - PcktCounter->GetYaxis()->SetTitle("Counter"); - PcktCounter->GetYaxis()->SetTitleSize(0.05); - PcktCounter->GetYaxis()->CenterTitle(); - PcktCounter->GetYaxis()->SetLabelSize(0.04); - PcktCounter->SetMarkerColor(4); - PcktCounter->SetMarkerSize(.5); - PcktCounter->SetMarkerStyle(21); - PcktCounter->Draw("9p"); - - finalCanv2->cd(2); - FileOffset->SetStats(kFALSE); - FileOffset->GetXaxis()->SetTitle("File Offset"); - FileOffset->GetXaxis()->CenterTitle(); - FileOffset->GetXaxis()->SetTitleSize(0.05); - FileOffset->GetXaxis()->SetLabelSize(0.04); - FileOffset->GetYaxis()->SetTitle("Counter"); - FileOffset->GetYaxis()->CenterTitle(); - FileOffset->GetYaxis()->SetTitleSize(0.05); - FileOffset->GetYaxis()->SetLabelSize(0.04); - FileOffset->SetMarkerColor(3); - FileOffset->SetMarkerSize(.5); - FileOffset->SetMarkerStyle(21); - FileOffset->Draw("9p");*/ + finalCanv1->Update(); - //-------to save---------------------------/// oss.str(""); - oss1.str(""); - oss << outDir.Data() << filename.Data(); - oss1 << outDir.Data() << filename.Data(); - oss << "_HeaderScan_1." << format.Data(); - oss1 << "_HeaderScan_2." << format.Data(); - finalCanv1->SaveAs(oss.str().c_str()); - //finalCanv2->SaveAs(oss1.str().c_str()); - file->Close(); - -} + //------------ Second Canvas ---------------------// + finalCanv2->cd(1); + mg1->Draw("AP"); + mg1->GetXaxis()->SetTitle("File Offset"); + mg1->GetXaxis()->CenterTitle(); + mg1->GetXaxis()->SetTitleSize(0.05); + mg1->GetXaxis()->SetLabelSize(0.04); + mg1->GetYaxis()->SetTitle("Counter"); + mg1->GetYaxis()->CenterTitle(); + mg1->GetYaxis()->SetTitleSize(0.05); + mg1->GetYaxis()->SetLabelSize(0.04); + + finalCanv2->cd(2); + mg2->Draw("AP"); + mg2->GetXaxis()->SetTitle("File Offset"); + mg2->GetXaxis()->CenterTitle(); + mg2->GetXaxis()->SetTitleSize(0.05); + mg2->GetXaxis()->SetLabelSize(0.04); + mg2->GetYaxis()->SetTitle("OBT"); + mg2->GetYaxis()->CenterTitle(); + mg2->GetYaxis()->SetTitleSize(0.05); + mg2->GetYaxis()->SetLabelSize(0.04); + + finalCanv2->Update(); + + oss1.str(""); + oss1 << outDir.Data() << filename.Data(); + oss1 << "_HeaderScan_2"<<"." << format.Data(); + + finalCanv2->SaveAs(oss1.str().c_str()); + + file->Close(); + +} int main(int argc, char* argv[]){ TString path;