1 | /* |
---|
2 | root -l examples/Example1.C\(\"delphes_output.root\"\) |
---|
3 | */ |
---|
4 | |
---|
5 | //------------------------------------------------------------------------------ |
---|
6 | |
---|
7 | void Example1(const char *inputFile) |
---|
8 | { |
---|
9 | gSystem->Load("libDelphes"); |
---|
10 | |
---|
11 | // Create chain of root trees |
---|
12 | TChain chain("Delphes"); |
---|
13 | chain.Add(inputFile); |
---|
14 | |
---|
15 | // Create object of class ExRootTreeReader |
---|
16 | ExRootTreeReader *treeReader = new ExRootTreeReader(&chain); |
---|
17 | Long64_t numberOfEntries = treeReader->GetEntries(); |
---|
18 | |
---|
19 | // Get pointers to branches used in this analysis |
---|
20 | TClonesArray *branchJet = treeReader->UseBranch("Jet"); |
---|
21 | TClonesArray *branchElectron = treeReader->UseBranch("Electron"); |
---|
22 | |
---|
23 | // Book histograms |
---|
24 | TH1 *histJetPT = new TH1F("jet_pt", "jet P_{T}", 100, 0.0, 100.0); |
---|
25 | TH1 *histMass = new TH1F("mass", "M_{inv}(e_{1}, e_{2})", 100, 40.0, 140.0); |
---|
26 | |
---|
27 | // Loop over all events |
---|
28 | for(Int_t entry = 0; entry < numberOfEntries; ++entry) |
---|
29 | { |
---|
30 | // Load selected branches with data from specified event |
---|
31 | treeReader->ReadEntry(entry); |
---|
32 | |
---|
33 | // If event contains at least 1 jet |
---|
34 | if(branchJet->GetEntries() > 0) |
---|
35 | { |
---|
36 | // Take first jet |
---|
37 | Jet *jet = (Jet*) branchJet->At(0); |
---|
38 | |
---|
39 | // Plot jet transverse momentum |
---|
40 | histJetPT->Fill(jet->PT); |
---|
41 | |
---|
42 | // Print jet transverse momentum |
---|
43 | cout << jet->PT << endl; |
---|
44 | } |
---|
45 | |
---|
46 | Electron *elec1, *elec2; |
---|
47 | |
---|
48 | // If event contains at least 2 electrons |
---|
49 | if(branchElectron->GetEntries() > 1) |
---|
50 | { |
---|
51 | // Take first two electrons |
---|
52 | elec1 = (Electron *) branchElectron->At(0); |
---|
53 | elec2 = (Electron *) branchElectron->At(1); |
---|
54 | |
---|
55 | // Plot their invariant mass |
---|
56 | histMass->Fill(((elec1->P4()) + (elec2->P4())).M()); |
---|
57 | } |
---|
58 | } |
---|
59 | |
---|
60 | // Show resulting histograms |
---|
61 | histJetPT->Draw(); |
---|
62 | histMass->Draw(); |
---|
63 | } |
---|