| 1 | mocchiut | 1.1 |  | 
| 2 |  |  |  | 
| 3 |  |  | /** | 
| 4 |  |  | * \file CaloNuclei.h | 
| 5 |  |  | * \author Emiliano Mocchiutti | 
| 6 |  |  | */ | 
| 7 |  |  | #ifndef calonuclei_h | 
| 8 |  |  | #define calonuclei_h | 
| 9 |  |  |  | 
| 10 |  |  | #include <PamLevel2.h> | 
| 11 |  |  |  | 
| 12 |  |  | #include <TTree.h> | 
| 13 |  |  | #include <TFriendElement.h> | 
| 14 |  |  | #include <TChain.h> | 
| 15 |  |  | #include <TFile.h> | 
| 16 |  |  | #include <TList.h> | 
| 17 |  |  | #include <TKey.h> | 
| 18 |  |  | #include <TSystemFile.h> | 
| 19 |  |  | #include <TSystemDirectory.h> | 
| 20 |  |  | #include <TSQLServer.h> | 
| 21 |  |  |  | 
| 22 |  |  | #include <iostream> | 
| 23 |  |  |  | 
| 24 |  |  | using namespace std; | 
| 25 |  |  |  | 
| 26 |  |  | /** | 
| 27 |  |  | * | 
| 28 |  |  | * Class to store and calculate variables useful for nuclei analysis | 
| 29 |  |  | */ | 
| 30 |  |  | class CaloNuclei : public TObject { | 
| 31 |  |  |  | 
| 32 |  |  | private: | 
| 33 |  |  | // | 
| 34 |  |  | PamLevel2 *L2; | 
| 35 |  |  | // | 
| 36 |  |  | // needed to avoid reprocessing the same event over and over to obtain the variables | 
| 37 |  |  | // | 
| 38 |  |  | UInt_t OBT; | 
| 39 |  |  | UInt_t PKT; | 
| 40 |  |  | UInt_t atime; | 
| 41 | mocchiut | 1.3 | Int_t tr; | 
| 42 | mocchiut | 1.1 | // | 
| 43 |  |  | Int_t interplane; ///< Number of available dE/dx measurements before interaction or exit from the calo (interaction plane) | 
| 44 |  |  | Int_t N; ///< Number of dE/dx measurements to be used to calculate qpremeanN, default N = 5 | 
| 45 | mocchiut | 1.2 | Int_t R; ///< Number of strip to be used around the trajectory to calculate qpremeanN, default R = 3 | 
| 46 | mocchiut | 1.1 | Float_t preq; ///< Energy release (MIP) up to the interaction plane (included) | 
| 47 |  |  | Float_t postq; ///< Energy release (MIP) from the interaction plane (excluded) up to the last plane | 
| 48 |  |  | Float_t dedx1; ///< Energy release (MIP) along the track on the first Silicon detector (Y EVEN). | 
| 49 |  |  | Float_t dedx3; ///< Energy release (MIP) along the track on the first three Silicon detectors (Y EVEN, X EVEN, Y ODD). | 
| 50 |  |  | Float_t qpremean; ///< Truncated mean (MIP) along the track up to the interaction plane preq using three points | 
| 51 |  |  | Float_t qpremeanN; ///< Truncated mean (MIP) along the track up to the interaction plane preq using N points | 
| 52 |  |  | Float_t ethr; ///< Threshold (MIP) needed to find the interaction plane | 
| 53 |  |  | Bool_t multhit; ///< True if the interaction plane has been determined by multiple hit counting | 
| 54 |  |  | Bool_t gap; ///< True if determining the interaction plane a big (>5 planes) gap has been found between a point and another along the track | 
| 55 |  |  | // | 
| 56 |  |  |  | 
| 57 |  |  | public: | 
| 58 |  |  | // | 
| 59 |  |  | // | 
| 60 | mocchiut | 1.3 | Int_t Get_interplane(){ Process(); return interplane;}; ///< Number of available dE/dx measurements before interaction or exit from the calo (interaction plane) | 
| 61 |  |  | Int_t Get_N(){ return N;}; ///< Number of available dE/dx measurements before interaction or exit from the calo (interaction plane) | 
| 62 |  |  | Int_t Get_R(){ return R;}; ///< Number of strip to be used around the trajectory to calculate qpremeanN, default R = 3 | 
| 63 |  |  | Float_t Get_preq(){ Process(); return preq;}; ///< Energy release (MIP) up to the interaction plane (included) | 
| 64 |  |  | Float_t Get_postq(){ Process(); return postq;}; ///< Energy release (MIP) from the interaction plane (excluded) up to the last plane | 
| 65 |  |  | Float_t Get_dEdx1(){ Process(); return dedx1;}; ///< Energy release (MIP) along the track on the first Silicon detector (Y EVEN). | 
| 66 |  |  | Float_t Get_dEdx3(){ Process(); return dedx3;}; ///< Energy release (MIP) along the track on the first three Silicon detectors (Y EVEN, X EVEN, Y ODD). | 
| 67 |  |  | Float_t Get_qpremean(){ Process(); return qpremean;}; ///< Truncated mean (MIP) along the track up to the interaction plane preq using three points | 
| 68 |  |  | Float_t Get_qpremeanN(){ Process(); return qpremeanN;}; ///< Truncated mean (MIP) along the track up to the interaction plane preq using N points | 
| 69 |  |  | Float_t Get_ethr(){ Process(); return ethr;}; ///< Threshold (MIP) needed to find the interaction plane | 
| 70 | mocchiut | 1.1 | Bool_t IsMulthit(){ Process(); return multhit;}; ///< True if the interaction plane has been determined by multiple hit counting | 
| 71 |  |  | // | 
| 72 | mocchiut | 1.3 | void Set_N(Int_t n){ N=n;}; | 
| 73 |  |  | void Set_R(Int_t r){ R=r;}; | 
| 74 | mocchiut | 1.1 | // | 
| 75 |  |  | CaloNuclei(); | 
| 76 |  |  | CaloNuclei(PamLevel2 *L2); | 
| 77 |  |  | ~CaloNuclei(){ Delete(); }; | 
| 78 |  |  | // | 
| 79 |  |  | void Clear(); | 
| 80 |  |  | void Clear(Option_t *option){Clear();}; | 
| 81 |  |  | void Delete(); | 
| 82 |  |  | // | 
| 83 | mocchiut | 1.3 | void Process(); ///< Process data for track number 0 | 
| 84 |  |  | void Process(Int_t ntr); ///< Process data for track number ntr | 
| 85 | mocchiut | 1.1 | void Print(); | 
| 86 |  |  | // | 
| 87 |  |  | ClassDef(CaloNuclei,1); | 
| 88 |  |  | }; | 
| 89 |  |  |  | 
| 90 |  |  | #endif | 
| 91 |  |  |  |