// ---------------------------------------------------------------------------- // $Id: sio_SeeCalHit.C,v 1.1 2001/06/21 22:20:41 masako Exp $ // ---------------------------------------------------------------------------- // $Log: sio_SeeCalHit.C,v $ // Revision 1.1 2001/06/21 22:20:41 masako // Example file to handle CalHit. // // // Example file to handle CalHit. // // In this file, 1) read sio event (output from GISMO) // 2) access CalHit // 3) get E Theta Phi and R // // Jun. 2001 M. Iwasaki // // :: How to run :: // // 1) to call the root, type // // root // // 2) // root [0] .x sio_SeeCalHit.C // // .. that's it. // // For example, if you like to run 3 events, type like // root [0] .x sio_SeeCalHit(3) // #include int sio_SeeCalHit(int nEvent=5) { gROOT->Reset(); TString parfile_dir; parfile_dir += gSystem->Getenv("LCDROOT") ;parfile_dir += "/"; parfile_dir += gSystem->Getenv("LCDVERSION");parfile_dir += "/"; parfile_dir += "ParFiles/"; // In order to refer to shareable libraries in this simple form, // include their paths in a .rootrc file. gSystem->Load("libLCDEvent"); gSystem->Load("libLCDRootAppsUtil"); // gSystem->Load("libLCDFastMC"); // gSystem->Load("libLCDFullRecon"); // gSystem->Load("libLCDPhUtil"); gSystem->Load("libSIO2root"); gSystem->Load("libLCDSIOUtil"); LCDEvent event; // Input generated stdhep file Char_t* sioFile = "test_L2_pi0.sio"; //Char_t* sioFile = "test_top_SD.sio"; LCDreadSIOFile source(sioFile,&event); // Must use the same detector name as Full simulation Char_t* geomFile = //"Silicon.par"; //Silicon "Large.par"; // Large //"Small.par"; // Small TString s_geomFile(parfile_dir); s_geomFile += geomFile; FILE* m_geomfile = fopen(s_geomFile.Data(),"r"); LCDGetParameters gp(m_geomfile); fclose(m_geomfile); // Setup CalHitUtil LCDCalHitUtil chutil(&gp); // Define a histogram or two TH1F *EM_E = new TH1F("EM_E" ,"EM energy",50, 0.0, 2.5); TH1F *EM_phi = new TH1F("EM_phi" ,"EM phi" ,50, 0.0, 6.3); TH1F *EM_theta= new TH1F("EM_theta","EM theta" ,50, -1., 1.0); TH1F *EM_r = new TH1F("EM_r" ,"EM r" ,50, 0.0, 300.0); TH1F *HAD_E = new TH1F("HAD_E" ,"HAD energy",50, 0.0, 2.5); TH1F *HAD_phi = new TH1F("HAD_phi" ,"HAD phi" ,50, 0.0, 6.3); TH1F *HAD_theta= new TH1F("HAD_theta","HAD theta" ,50, -1., 1.0); TH1F *HAD_r = new TH1F("HAD_r" ,"HAD r" ,50, 0.0, 300.0); // Event loop Int_t iEvent; for (iEvent = 0; iEvent < nEvent; iEvent++) { if (!source.GetEvent()) break; LCDCalHit* cE; Int_t sysid; Double_t Ecal, phi, theta, Rcyl; Int_t nCal = event->CAL()->GetEntries(); if (nCal > 0) { for (int i_em=0; i_emCAL()->At(i_em); Ecal = chutil.GetEtot(cE); phi = chutil.GetPhi(cE); theta = TMath::Cos(chutil.GetTheta(cE)); Rcyl = chutil.GetRcyl(cE); sysid=cE->GetTower()->GetSystem(); switch(sysid) { case 10: // EM Barrel EM_E ->Fill(Ecal); EM_phi ->Fill(phi); EM_theta->Fill(theta); EM_r ->Fill(Rcyl); break; case 11: // EM EndCap EM_E ->Fill(Ecal); EM_phi ->Fill(phi); EM_theta->Fill(theta); EM_r ->Fill(Rcyl); break; case 12: // HAD Barrel HAD_E ->Fill(Ecal); HAD_phi ->Fill(phi); HAD_theta->Fill(theta); HAD_r ->Fill(Rcyl); break; case 13: // HAD EndCap HAD_E ->Fill(Ecal); HAD_phi ->Fill(phi); HAD_theta->Fill(theta); HAD_r ->Fill(Rcyl); break; default: break; } } } } EM_E->SetFillColor(4); EM_phi->SetFillColor(4); EM_theta->SetFillColor(4); EM_r->SetFillColor(4); HAD_E->SetFillColor(4); HAD_phi->SetFillColor(4); HAD_theta->SetFillColor(4); HAD_r->SetFillColor(4); TCanvas *c1 = new TCanvas("c1", "c1", 600, 600); c1->Divide(2,2); c1->cd(1); EM_E->Draw("B"); c1->cd(2); EM_phi->Draw("B"); c1->cd(3); EM_theta->Draw("B"); c1->cd(4); EM_r->Draw("B"); TCanvas *c2 = new TCanvas("c2", "c2", 600, 600); c2->Divide(2,2); c2->cd(1); HAD_E->Draw("B"); c2->cd(2); HAD_phi->Draw("B"); c2->cd(3); HAD_theta->Draw("B"); c2->cd(4); HAD_r->Draw("B"); return iEvent; }