// { cout << " Executing Electron Analysis Macro." << endl; // Clean up : gROOT->Reset(); // gStyle->SetFrameFillColor(42); // gROOT->SetStyle("Plain"); char *s = new char[1]; // Electron file : TFile electronFile("electrons.root"); // List the contents : electronFile->cd("HighPtElectrons"); electronFile->ls(); TTree* electronNtuple = (TTree*) ElectronNtuple; electronNtuple->Print(); // Set up the canvas and pads : // Make a canvas to plot the histograms on : c1 = new TCanvas("c1","Electron analysis",0,0,700,900); c1->SetFillColor(18); // c1->SetHighLightColor(0); // Make the pads for the individual histograms. // The coordinates are (x,y) of the bottom-left-hand and upper-right-hand // corners, respectively : pad1 = new TPad("pad1"," ",0.01,0.51,0.49,0.99,21); pad2 = new TPad("pad2"," ",0.51,0.51,0.99,0.99,21); pad3 = new TPad("pad3"," ",0.01,0.01,0.49,0.49,21); pad4 = new TPad("pad4"," ",0.51,0.01,0.99,0.49,21); pad1->Draw(); pad2->Draw(); pad3->Draw(); pad4->Draw(); pad1->SetFillColor(19); // pad1->SetBorderMode(0.); pad1->SetGrid(); pad2->SetFillColor(19); // pad2->SetBorderMode(0.); pad2->SetGrid(); pad3->SetFillColor(19); // pad3->SetBorderMode(0.); pad3->SetGrid(); pad4->SetFillColor(19); // pad4->SetBorderMode(0.); pad4->SetGrid(); // Set common line attributes : electronNtuple->SetLineColor(1); electronNtuple->SetLineWidth(2); pad1->cd(); electronNtuple->Draw("ElecEt","ElecReg==1"); pad2->cd(); electronNtuple->Draw("ElecNShwrMax","ElecReg==1"); // pad3->cd(); // electronNtuple->Draw("nPes2dCluster"); // pad4->cd(); // electronNtuple->Draw("nPes2dCluster","ElecReg==1"); pad3->cd(); electronNtuple->SetLineStyle(2); electronNtuple->Draw("ElecEta","ElecReg==1 && ElecNShwrMax == 0"); electronNtuple->SetLineStyle(1); electronNtuple->Draw("ElecEta","ElecReg==1 && ElecNShwrMax > 0","same"); pad4->cd(); electronNtuple->Draw("ElecPhi","ElecReg==1 && ElecNShwrMax > 0"); electronNtuple->SetLineStyle(2); electronNtuple->Draw("ElecPhi","ElecReg==1 && ElecNShwrMax == 0","same"); electronNtuple->SetLineStyle(1); c1->Update(); // Try looping through the events in the ntuple to calculate efficiencies etc : Int_t nEvent = electronNtuple->GetEntries(); cout << " Looping over the " << nEvent << " events in electronNtuple : " << endl; TBranch* elecBranch = electronNtuple->GetBranch("ELEC"); TBranch* plugBranch = electronNtuple->GetBranch("PLUG"); int nGoodPlug = 0; int nGoodPlugWithShwrMax = 0; int nGoodPlugMissed = 0; for (Int_t iEvent = 0; iEvent < nEvent; iEvent++) { // cout << " Reading event " << iEvent << endl; electronNtuple->GetEvent(iEvent); // elecBranch->Print(); int nElec = elecBranch->GetLeaf("nElec")->GetValue(); // cout << " nElec = " << nElec << endl; // Alternatively, get the length of the array for any of the block variables : // cout << " GetLen = " << elecBranch->GetLeaf("ElecEta")->GetLen() << endl; for (int elecIndex = 0; elecIndex < nElec; elecIndex++) { int elecReg = elecBranch->GetLeaf("ElecReg")->GetValue(elecIndex); float elecEt = elecBranch->GetLeaf("ElecEt")->GetValue(elecIndex); float elecEta = elecBranch->GetLeaf("ElecEta")->GetValue(elecIndex); int elecNShwrMax = elecBranch->GetLeaf("ElecNShwrMax")->GetValue(elecIndex); // cout << " elecEt = " << elecEt << endl; // cout << " elecEta = " << elecEta << endl; // cout << " elecReg = " << elecReg << endl; int nPes2dCluster = plugBranch->GetLeaf("nPes2dCluster")->GetValue(); if (elecReg == 1 && elecEt > 20.0 && fabs(elecEta) < 2.5) { // This plug electron enters the denominator : nGoodPlug += 1; if (elecNShwrMax > 0) { // This plug electron enters the numerator : nGoodPlugWithShwrMax += 1; } if (nPes2dCluster > 0 && elecNShwrMax == 0) { // This plug electron missed possible matching Pes2dClusters : nGoodPlugMissed += 1; } } } } float matchingFraction = 0.; if (nGoodPlug != 0) matchingFraction = (1.0*nGoodPlugWithShwrMax)/(1.0*nGoodPlug); float missedFraction = 0.; if (nGoodPlugWithShwrMax != 0) missedFraction = (1.0*nGoodPlugMissed)/(1.0*nGoodPlugWithShwrMax); cout << endl << " Results of plug electron analysis : " << endl << " =================================== " << endl; cout << " Fraction with matched Pes2dClusters = " << matchingFraction << endl; cout << " Fraction with missed Pes2dClusters = " << missedFraction << endl << endl; }