|
1 | | -#if !defined(__CLING__) || defined(__ROOTCLING__) |
2 | | -#include "FITSimulation/Detector.h" |
| 1 | +#include "T0Simulation/Detector.h" |
3 | 2 | #include "FITBase/Digit.h" |
4 | 3 | #include <TH2F.h> |
5 | | -#endif |
6 | | - |
7 | | -void readHitsDigits() |
| 4 | +void readHitsDigits() |
8 | 5 | { |
9 | 6 | using namespace o2::fit; |
10 | 7 | // using namespace o2::fit::Digit; |
11 | | - |
| 8 | + |
12 | 9 | // Create histograms |
13 | 10 | TDirectory* cwd = gDirectory; |
14 | 11 | gDirectory = 0x0; |
| 12 | + |
| 13 | + TH2F *hMultHit = new TH2F("hMultHits","photons Hits ",210, 0, 210, 500, 0, 5000); |
| 14 | + TH2F *hTimeHitA = new TH2F("hTimeAhit", "Time Hits", 210, 0, 210, 1000, 11, 12); |
| 15 | + TH2F *hTimeHitC = new TH2F("hTimeChit", "Time Hits", 210, 0, 210, 1000, 2.8, 3.8); |
| 16 | + TH2F *hMultDig = new TH2F("hMultDig","photons Digits ",210, 0, 210, 500, 0, 20); |
| 17 | + TH2F *hTimeDig = new TH2F("hTimeDig", "Time Digits", 210, 0, 210, 100, -1, 1); |
15 | 18 |
|
16 | | - TH2F* hMultHit = new TH2F("hMultHits", "photons Hits ", 210, 0, 210, 500, 0, 5000); |
17 | | - TH2F* hTimeHit = new TH2F("hTimeAChit", "Time Hits", 210, 0, 210, 1000, 0, 15); |
18 | | - TH2F* hMultDig = new TH2F("hMultDig", "photons Digits ", 210, 0, 210, 500, 0, 20); |
19 | | - TH2F* hTimeDig = new TH2F("hTimeDig", "Time Digits", 210, 0, 210, 300, 0, 15); |
20 | | - |
21 | | - gDirectory = cwd; |
22 | | - |
23 | | - TFile* fhit = new TFile("o2sim.root"); |
24 | | - TTree* hitTree = (TTree*)fhit->Get("o2sim"); |
25 | | - std::vector<HitType>* hitArray = nullptr; |
26 | | - hitTree->SetBranchAddress("FITHit", &hitArray); |
| 19 | + gDirectory = cwd; |
| 20 | + |
| 21 | + TFile *fhit = new TFile("o2sim.root"); |
| 22 | + TTree *hitTree = (TTree*)fhit->Get("o2sim"); |
| 23 | + std::vector<o2::fit::HitType>* hitArray = nullptr; |
| 24 | + hitTree->SetBranchAddress("T0Hit", &hitArray); |
27 | 25 | Int_t nevH = hitTree->GetEntries(); // hits are stored as one event per entry |
28 | | - std::cout << "Found " << nevH << " events with hits " << std::endl; |
29 | | - |
| 26 | + // std::cout << "Found " << nevH << " events with hits " << std::endl; |
| 27 | + |
30 | 28 | Double_t hit_time[240]; |
31 | 29 | Int_t countE[240]; |
32 | | - // Event ------------------------- LOOP |
33 | | - for (Int_t ievent = 0; ievent < nevH; ievent++) { |
| 30 | + // Event ------------------------- LOOP |
| 31 | + for (Int_t ievent=0; ievent<nevH; ievent++){ |
34 | 32 | hitTree->GetEntry(ievent); |
35 | | - for (int ii = 0; ii < 240; ii++) { |
36 | | - countE[ii] = 0; |
37 | | - hit_time[ii] = 0; |
38 | | - } |
| 33 | + for (int ii=0; ii<240; ii++) { countE[ii]=0;hit_time[ii]=0; } |
39 | 34 | for (auto& hit : *hitArray) { |
40 | 35 | Int_t detID = hit.GetDetectorID(); |
41 | 36 | hit_time[detID] = hit.GetTime(); |
42 | | - hTimeHit->Fill(detID, hit_time[detID]); |
43 | | - if (hit_time[detID] < 10 && detID < 96) |
44 | | - std::cout << ievent << " " << detID << " time " << hit_time[detID] << endl; |
45 | | - |
46 | | - countE[detID]++; |
| 37 | + hTimeHitA -> Fill(detID, hit_time[detID]); |
| 38 | + hTimeHitC -> Fill(detID, hit_time[detID]); |
| 39 | + countE[detID]++; |
47 | 40 | } |
48 | | - for (int ii = 0; ii < 208; ii++) { |
49 | | - if (countE[ii] > 100) { |
50 | | - hMultHit->Fill(ii, countE[ii]); |
51 | | - // std::cout<<ii<<" "<<countE[ii]<<endl; |
| 41 | + for (int ii=0; ii<208; ii++) { |
| 42 | + if (countE[ii]>100) { |
| 43 | + hMultHit -> Fill(ii, countE[ii]); |
| 44 | + // std::cout<<ii<<" "<<countE[ii]<<endl; |
52 | 45 | } |
53 | 46 | } |
54 | 47 | } |
55 | | - TFile* fdig = TFile::Open("o2sim_digi.root"); |
| 48 | + |
| 49 | + TFile* fdig = TFile::Open("t0digits.root"); |
56 | 50 | std::cout << " Open digits file " << std::endl; |
57 | 51 | TTree* digTree = (TTree*)fdig->Get("o2sim"); |
58 | | - o2::fit::Digit* digArr = new Digit; |
59 | | - digTree->SetBranchAddress("FITDigit", &digArr); |
| 52 | + std::vector<o2::fit::Digit> * digArr = new std::vector<Digit>; |
| 53 | + digTree->SetBranchAddress("T0Digit", &digArr); |
60 | 54 | Int_t nevD = digTree->GetEntries(); // digits in cont. readout may be grouped as few events per entry |
61 | 55 | std::cout << "Found " << nevD << " events with digits " << std::endl; |
62 | | - Float_t cfd[208], amp[208]; |
| 56 | + Float_t cfd[208], amp[208], part[208]; |
63 | 57 | for (Int_t iev = 0; iev < nevD; iev++) { |
64 | 58 | digTree->GetEvent(iev); |
65 | | - for (int ii = 0; ii < 208; ii++) { |
66 | | - cfd[ii] = amp[ii] = 0; |
67 | | - } |
68 | | - for (const auto& d : digArr->getChDgData()) { |
69 | | - Int_t mcp = d.ChId; |
70 | | - cfd[mcp] = d.CFDTime; |
71 | | - amp[mcp] = d.QTCAmpl; |
72 | | - // cout<<iev<<" "<<mcp<<" "<< cfd[mcp]<<" "<< amp[mcp]<<endl; |
73 | | - hMultDig->Fill(Float_t(mcp), amp[mcp]); |
74 | | - hTimeDig->Fill(Float_t(mcp), cfd[mcp]); |
| 59 | + for (const auto& digit : *digArr) { |
| 60 | + for (int ii=0; ii<208; ii++) { cfd[ii]=amp[ii]=0; } |
| 61 | + Double_t evtime = digit.getTime(); |
| 62 | + for (const auto& d : digit.getChDgData()) { |
| 63 | + Int_t mcp = d.ChId; |
| 64 | + cfd[mcp] = d.CFDTime - evtime - 12.5; |
| 65 | + amp[mcp] = d.QTCAmpl; |
| 66 | + part[mcp] = d.numberOfParticles; |
| 67 | + cout<<iev<<" "<<mcp<<" "<< cfd[mcp]<<" "<< amp[mcp]<<" "<<part[mcp]<<endl; |
| 68 | + hMultDig ->Fill(Float_t (mcp),amp[mcp]); |
| 69 | + hTimeDig ->Fill(Float_t (mcp),cfd[mcp]); |
| 70 | + } |
75 | 71 | } |
76 | | - } |
77 | | - TFile* Hfile = new TFile("FigFit_dig_pp.root", "RECREATE"); |
| 72 | + } |
| 73 | + TFile *Hfile = new TFile("FigFit_hits_pp.root","RECREATE"); |
78 | 74 | printf("Writting histograms to root file \n"); |
79 | | - Hfile->cd(); |
| 75 | + Hfile->cd(); |
80 | 76 | //Create a canvas, set the view range, show histograms |
81 | 77 | // TCanvas *c1 = new TCanvas("c1","Alice T0 Time ",400,10,600,600); |
82 | | - hTimeHit->Write(); |
| 78 | + hTimeHitA->Write(); |
| 79 | + hTimeHitC->Write(); |
83 | 80 | hMultHit->Write(); |
84 | 81 | hTimeDig->Write(); |
85 | 82 | hMultDig->Write(); |
| 83 | + |
86 | 84 |
|
87 | 85 | } // end of macro |
| 86 | + |
| 87 | + |
| 88 | + |
| 89 | + |
| 90 | + |
0 commit comments