00001 #ifndef vDriftHistos_H
00002 #define vDriftHistos_H
00003
00004 #include "TH1.h"
00005 #include "TString.h"
00006 #include "TFile.h"
00007 #include "DTTMax.h"
00008 #include <string>
00009
00010
00011 class h4DSegm{
00012 public:
00013 h4DSegm(std::string name_){
00014 TString N = name_.c_str();
00015 name=name_.c_str();
00016 h4DSegmXPosInCham = new TH1F(N+"_h4DSegmXPosInCham",
00017 "4D Segment x position (cm) in Chamber RF", 200, -200, 200);
00018 h4DSegmYPosInCham = new TH1F(N+"_h4DSegmYPosInCham",
00019 "4D Segment y position (cm) in Chamber RF", 200, -200, 200);
00020 h4DSegmPhiAngleInCham = new TH1F(N+"_h4DSegmPhiAngleInCham",
00021 "4D Segment phi angle (rad) in Chamber RF", 180, -180, 180);
00022 h4DSegmThetaAngleInCham = new TH1F(N+"_h4DSegmThetaAngleInCham",
00023 "4D Segment theta angle (rad) in Chamber RF", 180, -180, 180);
00024 h4DSegmImpactAngleInCham = new TH1F(N+"_h4DSegmImpactAngleInCham",
00025 "4D Segment impact angle (rad) in Chamber RF", 180, -180, 180);
00026 }
00027 h4DSegm(TString name_, TFile* file){
00028 name=name_;
00029 h4DSegmXPosInCham = (TH1F *) file->Get(name+"_h4DSegmXPosInCham");
00030 h4DSegmYPosInCham = (TH1F *) file->Get(name+"_h4DSegmYPosInCham");
00031 h4DSegmPhiAngleInCham = (TH1F *) file->Get(name+"_h4DSegmPhiAngleInCham");
00032 h4DSegmThetaAngleInCham = (TH1F *) file->Get(name+"_h4DSegmThetaAngleInCham");
00033 h4DSegmImpactAngleInCham = (TH1F *) file->Get(name+"_h4DSegmImpactAngleInCham");
00034 }
00035 ~h4DSegm(){
00036 delete h4DSegmXPosInCham;
00037 delete h4DSegmYPosInCham;
00038 delete h4DSegmPhiAngleInCham;
00039 delete h4DSegmThetaAngleInCham;
00040 delete h4DSegmImpactAngleInCham;
00041 }
00042 void Fill(float x, float y, float phi, float theta, float impact) {
00043 h4DSegmXPosInCham->Fill(x);
00044 h4DSegmYPosInCham->Fill(y);
00045 h4DSegmPhiAngleInCham->Fill(phi);
00046 h4DSegmThetaAngleInCham->Fill(theta);
00047 h4DSegmImpactAngleInCham->Fill(impact);
00048 }
00049 void Fill(float x, float phi) {
00050 h4DSegmXPosInCham->Fill(x);
00051 h4DSegmPhiAngleInCham->Fill(phi);
00052 }
00053 void Write() {
00054 h4DSegmXPosInCham->Write();
00055 h4DSegmYPosInCham->Write();
00056 h4DSegmPhiAngleInCham->Write();
00057 h4DSegmThetaAngleInCham->Write();
00058 h4DSegmImpactAngleInCham->Write();
00059 }
00060 public:
00061
00062 TH1F *h4DSegmXPosInCham;
00063 TH1F *h4DSegmYPosInCham;
00064 TH1F *h4DSegmPhiAngleInCham;
00065 TH1F *h4DSegmThetaAngleInCham;
00066 TH1F *h4DSegmImpactAngleInCham;
00067
00068 TString name;
00069 };
00070
00071
00072
00073 class h2DSegm{
00074 public:
00075 h2DSegm(std::string name_){
00076 TString N = name_.c_str();
00077 name=name_.c_str();
00078 h2DSegmPosInCham = new TH1F(N+"_h2DSegmPosInCham",
00079 "2D Segment position (cm) in Chamber RF", 200, -200, 200);
00080 h2DSegmAngleInCham = new TH1F(N+"_h2DSegmAngleInCham",
00081 "2D Segment angle (rad) in Chamber RF", 200, -2, 2);
00082 h2DSegmCosAngleInCham = new TH1F(N+"_h2DSegmCosAngleInCham",
00083 "2D Segment cos(angle) in Chamber RF", 200, -2, 2);
00084 }
00085 h2DSegm(TString name_, TFile* file){
00086 name=name_;
00087
00088 h2DSegmPosInCham = (TH1F *) file->Get(name+"_h2DSegmPosInCham");
00089 h2DSegmAngleInCham = (TH1F *) file->Get(name+"_h2DSegmAngleInCham");
00090 h2DSegmCosAngleInCham = (TH1F *) file->Get(name+"_h2DSegmCosAngleInCham");
00091 }
00092 ~h2DSegm(){
00093 delete h2DSegmPosInCham;
00094 delete h2DSegmAngleInCham;
00095 delete h2DSegmCosAngleInCham;
00096 }
00097 void Fill(float pos, float localAngle) {
00098
00099 h2DSegmPosInCham->Fill(pos);
00100 h2DSegmAngleInCham->Fill(atan(localAngle));
00101 h2DSegmCosAngleInCham->Fill(cos(atan(localAngle)));
00102 }
00103 void Write() {
00104 h2DSegmPosInCham->Write();
00105 h2DSegmAngleInCham->Write();
00106 h2DSegmCosAngleInCham->Write();
00107 }
00108 public:
00109
00110 TH1F *h2DSegmPosInCham;
00111 TH1F *h2DSegmAngleInCham;
00112 TH1F *h2DSegmCosAngleInCham;
00113
00114 TString name;
00115 };
00116
00117
00118 class hTMaxCell{
00119 public:
00120 hTMaxCell(TString name_){
00121 name = name_;
00122
00123
00124 hTmax123 = new TH1F (name+"_Tmax123", "Tmax123 value", 2000, -1000., 1000.);
00125 hTmax124s72 = new TH1F (name+"_Tmax124_s72", "Tmax124 sigma=sqrt(7/2) value", 2000, -1000., 1000.);
00126 hTmax124s78 = new TH1F (name+"_Tmax124_s78", "Tmax124 sigma=sqrt(7/8) value", 2000, -1000., 1000.);
00127 hTmax134s72 = new TH1F (name+"_Tmax134_s72", "Tmax134 sigma=sqrt(7/2) value", 2000, -1000., 1000.);
00128 hTmax134s78 = new TH1F (name+"_Tmax134_s78", "Tmax134 sigma=sqrt(7/8) value", 2000, -1000., 1000.);
00129 hTmax234 = new TH1F (name+"_Tmax234", "Tmax234 value", 2000, -1000., 1000.);
00130 hTmax_3t0 = new TH1F (name+"_3t0", "Tmax+3*Delta(t0)", 2000, -1000., 1000.);
00131 hTmax_3t0_0 = new TH1F (name+"_3t0_0", "Tmax+3*Delta(t0); 3 hits", 2000, -1000., 1000.);
00132 hTmax_3t0_1 = new TH1F (name+"_3t0_1", "Tmax+3*Delta(t0); one t<5ns", 2000, -1000., 1000.);
00133 hTmax_3t0_2 = new TH1F (name+"_3t0_2", "Tmax+3*Delta(t0); one t<10ns", 2000, -1000., 1000.);
00134 hTmax_3t0_3 = new TH1F (name+"_3t0_3", "Tmax+3*Delta(t0); one t<20ns", 2000, -1000., 1000.);
00135 hTmax_3t0_4 = new TH1F (name+"_3t0_4", "Tmax+3*Delta(t0); one t<50ns", 2000, -1000., 1000.);
00136 hTmax_3t0_5 = new TH1F (name+"_3t0_5", "Tmax+3*Delta(t0); all t>50ns", 2000, -1000., 1000.);
00137 hTmax_2t0 = new TH1F (name+"_2t0", "Tmax+2*Delta(t0)", 2000, -1000., 1000.);
00138 hTmax_2t0_0 = new TH1F (name+"_2t0_0", "Tmax+2*Delta(t0); 3 hits", 2000, -1000., 1000.);
00139 hTmax_2t0_1 = new TH1F (name+"_2t0_1", "Tmax+2*Delta(t0); one t<5ns", 2000, -1000., 1000.);
00140 hTmax_2t0_2 = new TH1F (name+"_2t0_2", "Tmax+2*Delta(t0); one t<10ns", 2000, -1000., 1000.);
00141 hTmax_2t0_3 = new TH1F (name+"_2t0_3", "Tmax+2*Delta(t0); one t<20ns", 2000, -1000., 1000.);
00142 hTmax_2t0_4 = new TH1F (name+"_2t0_4", "Tmax+2*Delta(t0); one t<50ns", 2000, -1000., 1000.);
00143 hTmax_2t0_5 = new TH1F (name+"_2t0_5", "Tmax+2*Delta(t0); all t>50ns", 2000, -1000., 1000.);
00144 hTmax_t0 = new TH1F (name+"_t0", "Tmax+Delta(t0)", 2000, -1000., 1000.);
00145 hTmax_t0_0 = new TH1F (name+"_t0_0", "Tmax+Delta(t0); 3 hits", 2000, -1000., 1000.);
00146 hTmax_t0_1 = new TH1F (name+"_t0_1", "Tmax+Delta(t0); one t<5ns", 2000, -1000., 1000.);
00147 hTmax_t0_2 = new TH1F (name+"_t0_2", "Tmax+Delta(t0); one t<10ns", 2000, -1000., 1000.);
00148 hTmax_t0_3 = new TH1F (name+"_t0_3", "Tmax+Delta(t0); one t<20ns", 2000, -1000., 1000.);
00149 hTmax_t0_4 = new TH1F (name+"_t0_4", "Tmax+Delta(t0); one t<50ns", 2000, -1000., 1000.);
00150 hTmax_t0_5 = new TH1F (name+"_t0_5", "Tmax+Delta(t0); all t>50ns", 2000, -1000., 1000.);
00151 hTmax_0 = new TH1F (name+"_0", "Tmax", 2000, -1000., 1000.);
00152 }
00153
00154
00155 hTMaxCell (TString name_, TFile* file){
00156 name=name_;
00157 hTmax123 = (TH1F *) file->Get(name+"_Tmax123");
00158 hTmax124s72 = (TH1F *) file->Get(name+"_Tmax124_s72");
00159 hTmax124s78 = (TH1F *) file->Get(name+"_Tmax124_s78");
00160 hTmax134s72 = (TH1F *) file->Get(name+"_Tmax134_s72");
00161 hTmax134s78 = (TH1F *) file->Get(name+"_Tmax134_s78");
00162 hTmax234 = (TH1F *) file->Get(name+"_Tmax234");
00163 hTmax_3t0 = (TH1F *) file->Get(name+"_3t0");
00164 hTmax_3t0_0 = (TH1F *) file->Get(name+"_3t0_0");
00165 hTmax_3t0_1 = (TH1F *) file->Get(name+"_3t0_1");
00166 hTmax_3t0_2 = (TH1F *) file->Get(name+"_3t0_2");
00167 hTmax_3t0_3 = (TH1F *) file->Get(name+"_3t0_3");
00168 hTmax_3t0_4 = (TH1F *) file->Get(name+"_3t0_4");
00169 hTmax_3t0_5 = (TH1F *) file->Get(name+"_3t0_5");
00170 hTmax_2t0 = (TH1F *) file->Get(name+"_2t0");
00171 hTmax_2t0_0 = (TH1F *) file->Get(name+"_2t0_0");
00172 hTmax_2t0_1 = (TH1F *) file->Get(name+"_2t0_1");
00173 hTmax_2t0_2 = (TH1F *) file->Get(name+"_2t0_2");
00174 hTmax_2t0_3 = (TH1F *) file->Get(name+"_2t0_3");
00175 hTmax_2t0_4 = (TH1F *) file->Get(name+"_2t0_4");
00176 hTmax_2t0_5 = (TH1F *) file->Get(name+"_2t0_5");
00177 hTmax_t0 = (TH1F *) file->Get(name+"_t0");
00178 hTmax_t0_1 = (TH1F *) file->Get(name+"_t0_1");
00179 hTmax_t0_2 = (TH1F *) file->Get(name+"_t0_2");
00180 hTmax_t0_3 = (TH1F *) file->Get(name+"_t0_3");
00181 hTmax_t0_4 = (TH1F *) file->Get(name+"_t0_4");
00182 hTmax_t0_5 = (TH1F *) file->Get(name+"_t0_5");
00183 hTmax_0 = (TH1F *) file->Get(name+"_0");
00184
00185 }
00186
00187
00188 ~hTMaxCell(){
00189 delete hTmax123;
00190 delete hTmax124s72;
00191 delete hTmax124s78;
00192 delete hTmax134s72;
00193 delete hTmax134s78;
00194 delete hTmax234;
00195 delete hTmax_3t0;
00196 delete hTmax_3t0_0;
00197 delete hTmax_3t0_1;
00198 delete hTmax_3t0_2;
00199 delete hTmax_3t0_3;
00200 delete hTmax_3t0_4;
00201 delete hTmax_3t0_5;
00202 delete hTmax_2t0;
00203 delete hTmax_2t0_0;
00204 delete hTmax_2t0_1;
00205 delete hTmax_2t0_2;
00206 delete hTmax_2t0_3;
00207 delete hTmax_2t0_4;
00208 delete hTmax_2t0_5;
00209 delete hTmax_t0;
00210 delete hTmax_t0_0;
00211 delete hTmax_t0_1;
00212 delete hTmax_t0_2;
00213 delete hTmax_t0_3;
00214 delete hTmax_t0_4;
00215 delete hTmax_t0_5;
00216 delete hTmax_0;
00217
00218 }
00219
00220 void Fill(float tmax123, float tmax124, float tmax134, float tmax234,
00221 dttmaxenums::SigmaFactor s124,
00222 dttmaxenums::SigmaFactor s134,
00223 unsigned t0_123,
00224 unsigned t0_124,
00225 unsigned t0_134,
00226 unsigned t0_234,
00227 unsigned hSubGroup
00228 ) {
00229
00230 if(tmax123 > 0.) {
00231 hTmax123->Fill(tmax123);
00232 if(t0_123==1) {
00233 hTmax_t0->Fill(tmax123);
00234 switch(hSubGroup) {
00235 case 0: hTmax_t0_0->Fill(tmax123); break;
00236 case 1: hTmax_t0_1->Fill(tmax123); break;
00237 case 2: hTmax_t0_2->Fill(tmax123); break;
00238 case 3: hTmax_t0_3->Fill(tmax123); break;
00239 case 4: hTmax_t0_4->Fill(tmax123); break;
00240 case 99: hTmax_t0_5->Fill(tmax123); break;
00241 }
00242 }
00243 else {
00244 hTmax_2t0->Fill(tmax123);
00245 switch(hSubGroup) {
00246 case 0: hTmax_2t0_0->Fill(tmax123); break;
00247 case 1: hTmax_2t0_1->Fill(tmax123); break;
00248 case 2: hTmax_2t0_2->Fill(tmax123); break;
00249 case 3: hTmax_2t0_3->Fill(tmax123); break;
00250 case 4: hTmax_2t0_4->Fill(tmax123); break;
00251 case 99: hTmax_2t0_5->Fill(tmax123); break;
00252 }
00253 }
00254 }
00255 if(tmax124 > 0.) {
00256 (s124==dttmaxenums::r72)? hTmax124s72->Fill(tmax124):hTmax124s78->Fill(tmax124);
00257 if(t0_124==0)
00258 hTmax_0->Fill(tmax124);
00259 else if(t0_124==1) {
00260 hTmax_t0->Fill(tmax124);
00261 switch(hSubGroup) {
00262 case 0: hTmax_t0_0->Fill(tmax124); break;
00263 case 1: hTmax_t0_1->Fill(tmax124); break;
00264 case 2: hTmax_t0_2->Fill(tmax124); break;
00265 case 3: hTmax_t0_3->Fill(tmax124); break;
00266 case 4: hTmax_t0_4->Fill(tmax124); break;
00267 case 99: hTmax_t0_5->Fill(tmax124); break;
00268 }
00269 }
00270 else if(t0_124== 2) {
00271 hTmax_2t0->Fill(tmax124);
00272 switch(hSubGroup) {
00273 case 0: hTmax_2t0_0->Fill(tmax124); break;
00274 case 1: hTmax_2t0_1->Fill(tmax124); break;
00275 case 2: hTmax_2t0_2->Fill(tmax124); break;
00276 case 3: hTmax_2t0_3->Fill(tmax124); break;
00277 case 4: hTmax_2t0_4->Fill(tmax124); break;
00278 case 99: hTmax_2t0_5->Fill(tmax124); break;
00279 }
00280 }
00281 else if(t0_124==3) {
00282 hTmax_3t0->Fill(tmax124);
00283 switch(hSubGroup) {
00284 case 0: hTmax_3t0_0->Fill(tmax124); break;
00285 case 1: hTmax_3t0_1->Fill(tmax124); break;
00286 case 2: hTmax_3t0_2->Fill(tmax124); break;
00287 case 3: hTmax_3t0_3->Fill(tmax124); break;
00288 case 4: hTmax_3t0_4->Fill(tmax124); break;
00289 case 99: hTmax_3t0_5->Fill(tmax124);break;
00290 }
00291 }
00292 }
00293 if(tmax134 > 0.) {
00294 (s134==dttmaxenums::r72)? hTmax134s72->Fill(tmax134):hTmax134s78->Fill(tmax134);
00295 if(t0_134==0)
00296 hTmax_0->Fill(tmax134);
00297 else if(t0_134==1) {
00298 hTmax_t0->Fill(tmax134);
00299 switch(hSubGroup) {
00300 case 0: hTmax_t0_0->Fill(tmax134); break;
00301 case 1: hTmax_t0_1->Fill(tmax134); break;
00302 case 2: hTmax_t0_2->Fill(tmax134); break;
00303 case 3: hTmax_t0_3->Fill(tmax134); break;
00304 case 4: hTmax_t0_4->Fill(tmax134); break;
00305 case 99: hTmax_t0_5->Fill(tmax134); break;
00306 }
00307 }
00308 else if(t0_134== 2) {
00309 hTmax_2t0->Fill(tmax134);
00310 switch(hSubGroup) {
00311 case 0: hTmax_2t0_0->Fill(tmax134); break;
00312 case 1: hTmax_2t0_1->Fill(tmax134); break;
00313 case 2: hTmax_2t0_2->Fill(tmax134); break;
00314 case 3: hTmax_2t0_3->Fill(tmax134); break;
00315 case 4: hTmax_2t0_4->Fill(tmax134); break;
00316 case 99: hTmax_2t0_5->Fill(tmax134); break;
00317 }
00318 }
00319 else if(t0_134==3) {
00320 hTmax_3t0->Fill(tmax134);
00321 switch(hSubGroup) {
00322 case 0: hTmax_3t0_0->Fill(tmax134); break;
00323 case 1: hTmax_3t0_1->Fill(tmax134); break;
00324 case 2: hTmax_3t0_2->Fill(tmax134); break;
00325 case 3: hTmax_3t0_3->Fill(tmax134); break;
00326 case 4: hTmax_3t0_4->Fill(tmax134); break;
00327 case 99: hTmax_3t0_5->Fill(tmax134); break;
00328 }
00329 }
00330 }
00331 if(tmax234 > 0.) {
00332 hTmax234->Fill(tmax234);
00333 if(t0_234==1) {
00334 hTmax_t0->Fill(tmax234);
00335 switch(hSubGroup) {
00336 case 0: hTmax_t0_0->Fill(tmax234); break;
00337 case 1: hTmax_t0_1->Fill(tmax234); break;
00338 case 2: hTmax_t0_2->Fill(tmax234); break;
00339 case 3: hTmax_t0_3->Fill(tmax234); break;
00340 case 4: hTmax_t0_4->Fill(tmax234); break;
00341 case 99: hTmax_t0_5->Fill(tmax234);break;
00342 }
00343 }
00344 else {
00345 hTmax_2t0->Fill(tmax234);
00346 switch(hSubGroup) {
00347 case 0: hTmax_2t0_0->Fill(tmax234); break;
00348 case 1: hTmax_2t0_1->Fill(tmax234); break;
00349 case 2: hTmax_2t0_2->Fill(tmax234); break;
00350 case 3: hTmax_2t0_3->Fill(tmax234); break;
00351 case 4: hTmax_2t0_4->Fill(tmax234); break;
00352 case 99: hTmax_2t0_5->Fill(tmax234); break;
00353 }
00354 }
00355 }
00356 }
00357
00358 void Write() {
00359
00360 hTmax123->Write();
00361 hTmax124s72->Write();
00362 hTmax124s78->Write();
00363 hTmax134s72->Write();
00364 hTmax134s78->Write();
00365 hTmax234->Write();
00366 hTmax_3t0->Write();
00367 hTmax_3t0_0->Write();
00368 hTmax_3t0_1->Write();
00369 hTmax_3t0_2->Write();
00370 hTmax_3t0_3->Write();
00371 hTmax_3t0_4->Write();
00372 hTmax_3t0_5->Write();
00373 hTmax_2t0->Write();
00374 hTmax_2t0_0->Write();
00375 hTmax_2t0_1->Write();
00376 hTmax_2t0_2->Write();
00377 hTmax_2t0_3->Write();
00378 hTmax_2t0_4->Write();
00379 hTmax_2t0_5->Write();
00380 hTmax_t0->Write();
00381 hTmax_t0_0->Write();
00382 hTmax_t0_1->Write();
00383 hTmax_t0_2->Write();
00384 hTmax_t0_3->Write();
00385 hTmax_t0_4->Write();
00386 hTmax_t0_5->Write();
00387 hTmax_0->Write();
00388
00389 }
00390
00391 int GetT0Factor(TH1F* hist) {
00392 unsigned t0 = 999;
00393
00394 if (hist == hTmax_3t0)
00395 t0 = 3;
00396 else if(hist == hTmax_2t0)
00397 t0 = 2;
00398 else if(hist == hTmax_t0)
00399 t0 = 1;
00400 else if (hist == hTmax_0)
00401 t0 = 0;
00402
00403 return t0;
00404 }
00405
00406 TH1F* hTmax123;
00407 TH1F* hTmax124s72;
00408 TH1F* hTmax124s78;
00409 TH1F* hTmax134s72;
00410 TH1F* hTmax134s78;
00411 TH1F* hTmax234;
00412 TH1F* hTmax_3t0;
00413 TH1F* hTmax_3t0_0;
00414 TH1F* hTmax_3t0_1;
00415 TH1F* hTmax_3t0_2;
00416 TH1F* hTmax_3t0_3;
00417 TH1F* hTmax_3t0_4;
00418 TH1F* hTmax_3t0_5;
00419 TH1F* hTmax_2t0;
00420 TH1F* hTmax_2t0_0;
00421 TH1F* hTmax_2t0_1;
00422 TH1F* hTmax_2t0_2;
00423 TH1F* hTmax_2t0_3;
00424 TH1F* hTmax_2t0_4;
00425 TH1F* hTmax_2t0_5;
00426 TH1F* hTmax_t0;
00427 TH1F* hTmax_t0_0;
00428 TH1F* hTmax_t0_1;
00429 TH1F* hTmax_t0_2;
00430 TH1F* hTmax_t0_3;
00431 TH1F* hTmax_t0_4;
00432 TH1F* hTmax_t0_5;
00433 TH1F* hTmax_0;
00434
00435 TString name;
00436 };
00437
00438 #endif