(apply-cut-c)= # Walkthrough: Apply a cut **(10 minutes)** :::{note} The last "trick" you need to learn is how to apply a cut in an analysis macro. Once you've absorbed this, you'll know enough about ROOT to start using it for a real physics analysis. The simplest way to apply a cut in C++ is to use the `if` statement. This is described in every introductory C and C++ text, and I won't go into detail here. Instead, I'll provide an example to get you started. ::: Once again, let's start with a fresh macro: [] tree1->MakeSelector("AnalyzeCuts") Our goal is to count the number of events for which **`pz`** is less than 145 *GeV*. Since we're going to count the events, we're going to need a counter. Put the following in the Definition section of AnalyzeCuts.C: Int_t pzCount = 0; :::{note} Why `Int_t` and not `Long64_t`? I find that `Int_t` is easier to remember. I could even "cheat" and just use `int`, which will work for this example. You would only have to use the type `Long64_t` if you were counting more than $2^{31}$ entries. I promise you that there aren't that many entries in this file![^f86] ::: For every event that passes the cut, we want to add one to the count. Put the following in the `Process` section: :::{code-block} c++ if ( (*pz) < 145 ) { pzCount = pzCount + 1; // you could use "pzCount++;" instead } ::: :::{note} Be careful: it's important that you surround the logical expression (`*pz) < 145` with parentheses "()", but the "if-clause" must use curly brackets "{}". ::: Now we have to display the value. Again, I'm going to defer a complete description of [formatting text output](https://www.learncpp.com/cpp-tutorial/introduction-to-iostream-cout-cin-and-endl/) to a C++ textbook, and simply supply the following statement for your Wrap-up section: std::cout << "The number of events with pz < 145 is " << pzCount << std::endl; :::{note} When I run this macro, I get the following output: The number of events with pz < 145 is 14962 Hopefully you'll get the same answer. ::: [^f86]: Recall that in the lecture I gave at the start of the class, I mentioned that other commonly used data-analysis programs couldn't handle a large number of events. Can you picture an Excel spreadsheet with more than $2^{31}$ rows? ROOT can handle datasets with up to $2^{63}$ entries! Having trouble visualizing powers of 2? Remember that $2^{10} \approx 10^{3}$, so $2^{63} = 2^{3} \times (2^{60}) = 2^{3} \times \left(2^{10}\right)^{6} \approx 2^{3} \times \left(10^{3}\right)^{6} = 8*10^{18}$ or about eight quintillion, roughly the number of grains of sand in the world. My claim "ROOT can handle datasets with up to $2^{63}$ entries" is theoretical rather than practical.