FairRoot/PandaRoot
TimeStructure.C
Go to the documentation of this file.
1 /*
2  * TimeStructure.C
3  *
4  * Created on: 04.09.2015
5  * Author: Stockmanns
6  */
7 
8 #include <map>
9 #include <vector>
10 #include <iomanip>
11 #include <iostream>
12 
13 Int_t gEntryNr = 0;
14 TTree* t;
15 TClonesArray* mvdUnsorted = new TClonesArray("PndSdsDigiTopix4");
16 TClonesArray* mvdSorted = new TClonesArray("PndSdsDigiTopix4");
17 TH1D* h1Unsorted;
18 TH1D* h1Sorted;
21 TH1D* h1SortedDL;
23 std::vector<Double_t> dataInStreamUnsorted;
24 
25 
26 void Init()
27 {
28  TFile* f = new TFile("2014-10-27-00-06-02_50_MHz.root", "READ");
29  t = (TTree*)f->Get("pndsim");
30 // t->AddFriend("pndsim", "2014-10-27-00-06-02_50_MHz_Filtered_PosCorrected_Residuals.root");
31 // t->AddFriend("pndsim", "2014-10-27-00-06-02_50_MHz_Filtered_PosCorrected_Track.root");
32 // t->AddFriend("pndsim", "2014-10-27-00-06-02_50_MHz_Filtered_TimeCorrectedSorted_Event.root");
33 // t->StartViewer();
34  t->SetBranchAddress("ToPix4Hits", &mvdUnsorted);
35  t->SetBranchAddress("ToPix4HitsSorted", &mvdSorted);
36  h1Unsorted = new TH1D("h1Unsorted", "Unsorted", 200000, -100000, 100000);
37  h1Sorted = new TH1D("h1Sorted", "Sorted", 200000, -100000, 100000);
38  h1UnsortedDL = new TH1D("h1UnsortedDL", "UnsortedDL", 200000, -100000, 100000);
39  h1UnsortedTL = new TH1D("h1UnsortedTL", "UnsortedTL", 200000, -100000, 100000);
40 // t->SetBranchAddress("MvdTrack", &trackArray);
41 
42 
43 // mg->Add(gProjections, "Projected");
44  t->GetEntry(0);
45 }
46 
47 
48 int TimeStructure(Int_t sensorId = 0, Bool_t allSensors = kFALSE)
49 {
50  Init();
51  int runIndexUnsorted = 0;
52  int runIndexSorted = 0;
53 
54  std::ofstream unsorted ("unsorted3.txt", std::ofstream::out);
55  std::ofstream sorted ("sorted3.txt", std::ofstream::out);
56  double oldTimeUnsorted = 0;
57  double oldTimeUnsortedDL = 0;
58  double oldTimeUnsortedTL = 0;
59  double oldTimeSorted = 0;
60 
61 // for (int i = 0; i < t->GetEntries(); i++){
62  double timeDiff = 0;
63  double timeDiffDL = 0;
64  double timeDiffTL = 0;
65 
66 // for (int i = 0; i < t->GetEntries(); i++){
67  for (int i = 333800; i < 344680; i++){
68  t->GetEntry(i);
69  for (int j = 0; j < mvdUnsorted->GetEntries(); j++){
70  PndSdsDigiTopix4* unsortedHit = (PndSdsDigiTopix4*)mvdUnsorted->At(j);
71  if (unsortedHit->GetSensorID() == sensorId || allSensors){
72  timeDiff = unsortedHit->GetTimeStamp() - oldTimeUnsorted;
73  timeDiffDL = unsortedHit->GetTimeStamp() - oldTimeUnsortedDL;
74  timeDiffTL = unsortedHit->GetTimeStamp() - oldTimeUnsortedTL;
75 
76  unsorted << runIndexUnsorted++ << " , " << unsortedHit->GetSensorID() << " , " << std::setprecision(15) << unsortedHit->GetTimeStamp() << " , " << timeDiff << std::endl;
77  h1Unsorted->Fill(timeDiff);
78  h1UnsortedDL->Fill(timeDiffDL);
79  h1UnsortedTL->Fill(timeDiffTL);
80  oldTimeUnsortedTL = oldTimeUnsortedDL;
81  oldTimeUnsortedDL = oldTimeUnsorted;
82  oldTimeUnsorted = unsortedHit->GetTimeStamp();
83  dataInStreamUnsorted.push_back(unsortedHit->GetTimeStamp());
84  }
85  }
86  for (int k = 0; k < mvdSorted->GetEntries(); k++){
87  PndSdsDigiTopix4* sortedHit = (PndSdsDigiTopix4*)mvdSorted->At(k);
88  if (sortedHit->GetSensorID() == sensorId || allSensors){
89  double timeDiffD = sortedHit->GetTimeStamp() - oldTimeSorted;
90  sorted << runIndexSorted++ << " , " << std::setprecision(15) << sortedHit->GetTimeStamp() << " , " << timeDiffD << std::endl;
91  h1Sorted->Fill(timeDiffD);
92  oldTimeSorted = sortedHit->GetTimeStamp();
93  }
94  }
95  if (i % 1000 == 0){
96  std::cout << i << std::endl;
97  }
98  }
99  unsorted.close();
100  sorted.close();
101 
102  TCanvas* c1 = new TCanvas();
103  c1->Divide(4,1);
104  c1->cd(1);
105  h1Unsorted->Draw();
106  c1->cd(2);
107  h1UnsortedDL->Draw();
108  c1->cd(3);
109  h1UnsortedTL->Draw();
110  c1->cd(4);
111  h1Sorted->Draw();
112  return 0;
113 }
std::vector< Double_t > dataInStreamUnsorted
Definition: TimeStructure.C:23
void Init()
Definition: TimeStructure.C:26
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
TClonesArray * mvdUnsorted
Definition: TimeStructure.C:15
Int_t i
Definition: run_full.C:25
TH1D * h1SortedDL
Definition: TimeStructure.C:21
Data class to store the digi output of a pixel module.
TH1D * h1UnsortedTL
Definition: TimeStructure.C:20
TClonesArray * mvdSorted
Definition: TimeStructure.C:16
TTree * t
Definition: TimeStructure.C:14
Int_t gEntryNr
Definition: TimeStructure.C:13
TFile * f
Definition: bump_analys.C:12
TFile * out
Definition: reco_muo.C:20
c1
Definition: plot_dirc.C:35
TH1D * h1Unsorted
Definition: TimeStructure.C:17
TH1D * h1UnsortedDL
Definition: TimeStructure.C:19
TGraph * grTimeStampPos
Definition: TimeStructure.C:22
TH1D * h1Sorted
Definition: TimeStructure.C:18
int TimeStructure(Int_t sensorId=0, Bool_t allSensors=kFALSE)
Definition: TimeStructure.C:48