/[PAMELA software]/PamCut/TrkCuts/TrkChi2DeflTimeCut/TrkChi2DeflTimeCut.cpp
ViewVC logotype

Diff of /PamCut/TrkCuts/TrkChi2DeflTimeCut/TrkChi2DeflTimeCut.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by pam-fi, Sat Feb 20 12:56:45 2010 UTC revision 1.7 by pam-fi, Wed Mar 25 17:38:08 2015 UTC
# Line 8  Line 8 
8  #include "TrkChi2DeflTimeCut.h"  #include "TrkChi2DeflTimeCut.h"
9    
10  double TrkChi2DeflTimeCut::_GetChi2(PamLevel2 *event) {  double TrkChi2DeflTimeCut::_GetChi2(PamLevel2 *event) {
11    return event->GetTrack(0)->GetTrkTrack()->chi2;  //  return event->GetTrack(0)->GetTrkTrack()->chi2;
12        return (event->GetNTracks(_trkAlg)<=0 ? -1. : event->GetTrack(0,_trkAlg)->GetExtTrack()->chi2);
13  }  }
14    
15  int TrkChi2DeflTimeCut::Check(PamLevel2 *event) {  int TrkChi2DeflTimeCut::Check(PamLevel2 *event) {
# Line 16  int TrkChi2DeflTimeCut::Check(PamLevel2 Line 17  int TrkChi2DeflTimeCut::Check(PamLevel2
17    double chi2 = _GetChi2(event);    double chi2 = _GetChi2(event);
18    if (chi2 < 0.)    if (chi2 < 0.)
19      return 0;      return 0;
20    Double_t etaMod = fabs(event->GetTrack(0)->GetTrkTrack()->GetDeflection());  //   Double_t etaMod = fabs(event->GetTrack(0)->GetTrkTrack()->GetDeflection());
21    //   Int_t nHitX = event->GetTrack(0)->GetTrkTrack()->GetNX();
22      Double_t etaMod = fabs(event->GetTrack(0,_trkAlg)->GetExtTrack()->GetDeflection());
23      Int_t nHitX = event->GetTrack(0,_trkAlg)->GetExtTrack()->GetNX();
24      
25    //  cout << " nHitX " << nHitX << endl;
26      
27      if (nHitX == 3) {
28        for (UInt_t i = 0; i < _iDayFirst_nHitX3.size(); i++) {
29          _iDayFirst.push_back(_iDayFirst_nHitX3[i]);
30          _iDayLast.push_back(_iDayLast_nHitX3[i]);
31          for (int iPar=0; iPar<_nPar; iPar++) {
32            _p[iPar].push_back(_p_nHitX3[iPar][i]);
33          }
34        }  
35      }
36      else if (nHitX >= 4) {
37        for (UInt_t i = 0; i < _iDayFirst_nHitX4.size(); i++) {
38          _iDayFirst.push_back(_iDayFirst_nHitX4[i]);
39          _iDayLast.push_back(_iDayLast_nHitX4[i]);
40          for (int iPar=0; iPar<_nPar; iPar++) {
41            _p[iPar].push_back(_p_nHitX4[iPar][i]);
42          }
43        }  
44      }
45      else {
46        return 0;
47      }
48    
49    _time.Set(event->GetOrbitalInfo()->absTime, kFALSE, 0, kFALSE);    _time.Set(event->GetOrbitalInfo()->absTime, kFALSE, 0, kFALSE);
50    // TTimestamp::GetDate() returns date in format YYYYMMDD so to compare it    // TTimestamp::GetDate() returns date in format YYYYMMDD so to compare it
51    // with 6-digits dates (YYMMDD) we must subtract 20000000    // with 6-digits dates (YYMMDD) we must subtract 20000000
52    
53    Int_t iDaySel = (_time.GetDate(kFALSE) - 20000000); // note: GetDate returns an unsigned integer    Int_t iDaySel = (_time.GetDate(kFALSE) - 20000000); // note: GetDate returns an unsigned integer
54    //  cout << "day " << iDaySel << endl;
55    
56    bool found = false;    bool found = false;
57    for (UInt_t i = 0; i < _iDayFirst.size(); i++) {    for (UInt_t i = 0; i < _iDayFirst.size(); i++) {
58      if (_iDayFirst[i] <= iDaySel && iDaySel <= _iDayLast[i]) {      if (_iDayFirst[i] <= iDaySel && iDaySel <= _iDayLast[i]) {
59        _p0sel = _p0[i];        for (int iPar=0; iPar<_nPar; iPar++) {
60        _p1sel = _p1[i];          _pSel[iPar] = _p[iPar][i];
61        _p2sel = _p2[i];        }
62        _p3sel = _p3[i];        
63        //      cout << "FOUND: day " << iDaySel << endl;  //      cout << "FOUND: day " << iDaySel << endl;
64        //      cout << _iDayFirst[i] << " " << _iDayLast[i] << endl;  //      cout << _iDayFirst[i] << " " << _iDayLast[i] << endl;
65        //      cout << _p0sel << " " << _p1sel << " " << _p2sel << " " << _p3sel << endl;  //      cout << _pSel[0] << " " << _pSel[1] << " " << _pSel[2] << " " << _pSel[3] << endl;
66    
67        found = true;        found = true;
68        break;        break;
69      }      }
70    }    }
71    
72    if (!found)    if (!found) {
73        cout << "not found" << endl;
74        cout << endl;
75      return 0;      return 0;
76      }
77    
78    //  for (int iPar=0; iPar<_nPar; iPar++) {
79    //    cout << " p" << iPar << ": " << _pSel[iPar] << endl;
80    //  }
81    //  cout << endl;
82    
83      double chi2max;
84      
85      if (_nPar==4) {
86      
87        chi2max=_pSel[0] + _pSel[1] * pow(etaMod, _pSel[2]) * (1. + pow(_pSel[3] * etaMod, 2));
88    
89    if (chi2 > _p0sel + _p1sel * pow(etaMod, _p2sel) * (1. + pow(_p3sel * etaMod, 2))) {  //    cout << "chi2max " << chi2max << endl;
90    
91      }
92      else if (_nPar==5) {
93        chi2max=_pSel[0] + _pSel[1] * pow(etaMod, _pSel[2]) * (1. + pow(_pSel[3] * etaMod, _pSel[4]));
94      }
95      else {
96        chi2max=-1;
97      }
98    
99    //  cout << "chi2 " << chi2 << endl;
100      
101      if (chi2 > chi2max) {
102      
103    //    cout << "KO" << endl;
104        
105      return 0;      return 0;
106    
107    }    }
108    
109    //  cout << "OK" << endl;
110    
111    return CUTOK;    return CUTOK;
112    
113  }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.23