/[PAMELA software]/tof/flight/ToFNuclei/doc/Charge_Selection_Mean_Sigma.txt
ViewVC logotype

Contents of /tof/flight/ToFNuclei/doc/Charge_Selection_Mean_Sigma.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Fri Dec 28 15:03:28 2018 UTC (5 years, 11 months ago) by mayorov
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
Modified to implement new tracking algorithm output (NB no back :compatibility! Elena

1 // define tracking algorithm
2 const char* alg = "NUC"; // or "EXT" "STD" "EXTF" "NUC" "NUCEXT" "NUCEXTF"
3
4 //....snip ....
5
6 // define PamLevel2 and ToFNuclei
7 PamLevel2* event = new PamLevel2(dir,filelist,"+AUTO"); // << create pamela event
8 ToFNuclei *tofn = new ToFNuclei(event,alg);
9
10
11 // ...snip....
12
13 // the n-sigma cuts used for ToFNuclei for the B/C analysis
14 Float_t nsigma_s12=1.5; //
15 Float_t nsigma_s2=2.0; //
16 Float_t nsigma_s3=1.4; //
17
18 Float_t *charge_layer_trk_raw = NULL;
19 Float_t zs[9]; // charge in the 6 layers plus 3 mean charge
20
21 char htitle[50],info[50];
22
23 //==============================================================
24 // Here I read nuclei calibration file
25 //==============================================================
26 cout<<"reading nuclei_meansigma calibration file "<<endl;
27
28 sprintf(info,"nuclei_meansigma_10th_1.dat");
29
30 cout<<"reading meansigma file "<<info<<endl;
31
32 ifstream fin1(info);
33
34 // 5 species: Li, Be, B, C, O
35
36 TF1 *mean0[9][5];
37 TF1 *mean1[9][5];
38 TF1 *sigma[9][5];
39
40 for(Int_t i=0;i<9;i++) {
41 for(Int_t j=0;j<5;j++) {
42 sprintf(htitle, "mean0_%d_%d",j+5,i);
43 mean0[i][j] = new TF1(htitle,"pol6",-0.5,1.3);
44 sprintf(htitle, "mean1_%d_%d",j+5,i);
45 mean1[i][j] = new TF1(htitle,"pol1",1.2,3.);
46 sprintf(htitle, "sigma_%d_%d",j+5,i);
47 sigma[i][j] = new TF1(htitle,"pol1",-0.5,3.);
48 }
49 }
50
51 Float_t p0,p1,p2,p3,p4,p5,p6,p0a,p1a;
52 Int_t izin,ilayin;
53
54
55 // S11...S32,S1,S2,S3
56 // Z= 3,4,5,6,8
57
58 for(int i=0;i<9;i++) {
59 for(int j=0;j<5;j++) {
60 fin1>>ilayin>>izin>>p0>>p1>>p2>>p3>>p4>>p5>>p6>>p0a>>p1a;
61 cout<<ilayin<<" "<<izin<<" "<<p0<<" "<<p1<<" "<<p2<<" "<<p3<<" "<<p4<<" "<<p5<<" "<<p6<<" "<<p0a<<" "<<p1a<<endl;
62 mean0[i][j]->SetParameters(p0,p1,p2,p3,p4,p5,p6);
63 mean1[i][j]->SetParameters(p0a,p1a);
64 fin1>>ilayin>>izin>>p0>>p1;
65 cout<<ilayin<<" "<<izin<<" "<<p0<<" "<<p1<<endl;
66 sigma[i][j]->SetParameters(p0,p1);
67 }
68 }
69
70 fin1.close();
71
72
73
74 // ....... snip.....
75
76 Long64_t nevents = event->GetEntries();
77 cout<<" # events "<<nevents<<endl;
78
79 for(Long64_t iev=0; iev<nevents; iev++) {
80 event->GetEntry(iev);
81
82 int npt = event->GetNTracks(alg);
83
84 if( npt>0 ) { //if n.physical tracks>0
85
86 PamTrack *pamtrack = event->GetTrack(0,alg); //the method selects the 0th physical track, discarding the image
87
88 ExtTrack* trktrack = pamtrack->GetExtTrack();
89 ToFTrkVar* toftrack = pamtrack->GetToFTrack();
90
91 //========================================================================
92 //======================= only single tracks ========================
93 //========================================================================
94
95 if(
96 npt ==1 && //the tracks is single
97 trktrack->chi2 > 0 && //the fit converged
98 trktrack->nstep < 100 &&
99 true){
100
101
102 chi2=trktrack->chi2;
103 defl = trktrack->GetDeflection();
104 rig = 1./defl;
105 beta = toftrack->CalcBeta(10.,10.,20.); //beta12
106
107 if(
108 chi2 > 0 &&
109 trktrack->GetNX() >= 4 &&
110 trktrack->GetNY() >= 3 &&
111 defl > 0 &&
112 defl < 10 &&
113 beta_mean>0.2 &&
114 beta_mean<2.0 &&
115 true
116 ) {
117
118 //..........snip........
119 //=============================================================
120 //========== ToFNuclei ===== =================================
121 //=============================================================
122
123 charge_layer_trk_raw = tofn->Get_Charge_ToF_trk_layer_raw();
124 for(Int_t j=0;j<6;j++) {
125 zs[j]=charge_layer_trk_raw[j]; // S11,S12,...,S32
126 }
127
128 // the three mean charges for <S1>, <S2>, <S3>
129 zs[6] = 1000.0;
130 if(zs[0]<1000 && zs[1]<1000)
131 zs[6]=(zs[0]+zs[1])/2;
132 else if(zs[0]<1000 && zs[1]>=1000)
133 zs[6]=zs[0];
134 else if(zs[0]>=1000 && zs[1]<1000)
135 zs[6]=zs[1];
136
137 zs[7] = 1000.0;
138 if(zs[2]<1000 && zs[3]<1000)
139 zs[7]=(zs[2]+zs[3])/2;
140 else if(zs[2]<1000 && zs[3]>=1000)
141 zs[7]=zs[2];
142 else if(zs[2]>=1000 && zs[3]<1000)
143 zs[7]=zs[3];
144
145 zs[8] = 1000.0;
146 if(zs[4]<1000 && zs[5]<1000)
147 zs[8]=(zs[4]+zs[5])/2;
148 else if(zs[4]<1000 && zs[5]>=1000)
149 zs[8]=zs[4];
150 else if(zs[4]>=1000 && zs[5]<1000)
151 zs[8]=zs[5];
152
153 //================================================================
154 //============ Defining the cut for the raw selection=============
155 //============ Define charge using selection criteria ===========
156 //================================================================
157
158 //=================== S12 & S2mean & S3mean ====================
159
160 Int_t iztof1=0;
161 Int_t icount=0;
162
163 for (Int_t ij=0; ij<5; ij++) { // Li, Be, B, C, O
164 if(
165 (rig<=pow(10,1.25) &&
166 fabs(zs[1]-mean0[1][ij]->Eval(log10(rig)))< (nsigma_s12*sigma[1][ij]->Eval(log10(rig))) &&
167 fabs(zs[7]-mean0[7][ij]->Eval(log10(rig)))< (nsigma_s2*sigma[7][ij]->Eval(log10(rig))) &&
168 fabs(zs[8]-mean0[8][ij]->Eval(log10(rig)))< (nsigma_s3*sigma[8][ij]->Eval(log10(rig)))
169 ) ||
170 (rig>pow(10,1.25) &&
171 fabs(zs[1]-mean1[1][ij]->Eval(log10(rig)))< (nsigma_s12*sigma[1][ij]->Eval(log10(rig))) &&
172 fabs(zs[7]-mean1[7][ij]->Eval(log10(rig)))< (nsigma_s2*sigma[7][ij]->Eval(log10(rig))) &&
173 fabs(zs[8]-mean1[8][ij]->Eval(log10(rig)))< (nsigma_s3*sigma[8][ij]->Eval(log10(rig)))
174 )
175 ){
176 icount++;
177 iztof1=ij+3;
178 if (ij==4) iztof1 = 8;
179 }
180 }
181
182 if (icount>1) cout<<"overlap "<<endl;
183
184 //===================== S12 & S2mean =========================
185
186 Int_t iztof2=0;
187 icount=0;
188
189 for (Int_t ij=0; ij<5; ij++) { // Li, Be, B, C, O
190 if(
191 (rig<=pow(10,1.25) &&
192 fabs(zs[1]-mean0[1][ij]->Eval(log10(rig)))< (nsigma_s12*sigma[1][ij]->Eval(log10(rig))) &&
193 fabs(zs[7]-mean0[7][ij]->Eval(log10(rig)))< (nsigma_s2*sigma[7][ij]->Eval(log10(rig)))
194 ) ||
195 (rig>pow(10,1.25) &&
196 fabs(zs[1]-mean1[1][ij]->Eval(log10(rig)))< (nsigma_s12*sigma[1][ij]->Eval(log10(rig))) &&
197 fabs(zs[7]-mean1[7][ij]->Eval(log10(rig)))< (nsigma_s2*sigma[7][ij]->Eval(log10(rig)))
198 )
199 ){
200 icount++;
201 iztof2=ij+3;
202 if (ij==4) iztof2 = 8;
203 }
204 }
205
206 // .............snip.......
207
208 } // tracking cuts...
209 } // fit converged
210 } // ntracks>1
211 } // event loop
212
213

  ViewVC Help
Powered by ViewVC 1.1.23