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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide 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 mayorov 1.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