| 24 |
tof_track = this->ToFTrkVar::GetToFTrkVar(); |
tof_track = this->ToFTrkVar::GetToFTrkVar(); |
| 25 |
if(t) *trk_track = *t; |
if(t) *trk_track = *t; |
| 26 |
if(c) *calo_track = *c; |
if(c) *calo_track = *c; |
| 27 |
if(o) *tof_track = *o; |
if(o) *tof_track = *o; |
| 28 |
}; |
}; |
| 29 |
|
|
| 30 |
//-------------------------------------- |
//-------------------------------------- |
| 62 |
*/ |
*/ |
| 63 |
PamLevel2::~PamLevel2(){ |
PamLevel2::~PamLevel2(){ |
| 64 |
|
|
| 65 |
|
TrkLevel2::Clear(); |
| 66 |
|
CaloLevel2::Clear(); |
| 67 |
|
ToFLevel2::Clear(); |
| 68 |
|
TrigLevel2::Clear(); |
| 69 |
|
S4Level2::Clear(); |
| 70 |
|
NDLevel2::Clear(); |
| 71 |
|
AcLevel2::Clear(); |
| 72 |
|
OrbitalInfo::Clear(); |
| 73 |
|
|
| 74 |
delete sorted_tracks; |
delete sorted_tracks; |
| 75 |
|
|
| 76 |
}; |
}; |
| 78 |
* Clear the event |
* Clear the event |
| 79 |
*/ |
*/ |
| 80 |
void PamLevel2::Clear(){ |
void PamLevel2::Clear(){ |
| 81 |
|
|
| 82 |
|
|
| 83 |
sorted_tracks->Delete(); |
sorted_tracks->Delete(); |
| 84 |
|
|
| 85 |
}; |
}; |
| 90 |
// |
// |
| 91 |
//-------------------------------------- |
//-------------------------------------- |
| 92 |
/** |
/** |
| 93 |
|
* Retrieves the calorimeter track matching the seqno-th tracker stored track. |
| 94 |
|
* (If seqno = -1 retrieves the self-trigger calorimeter track) |
| 95 |
|
*/ |
| 96 |
|
CaloTrkVar *PamLevel2::GetCaloStoredTrack(int seqno){ |
| 97 |
|
|
| 98 |
|
CaloTrkVar *c = 0; |
| 99 |
|
Int_t it_calo=0; |
| 100 |
|
|
| 101 |
|
do{ |
| 102 |
|
c = CaloLevel2::GetCaloTrkVar(it_calo); |
| 103 |
|
it_calo++; |
| 104 |
|
} while( seqno != c->trkseqno && it_calo < CaloLevel2::ntrk()); |
| 105 |
|
|
| 106 |
|
if(seqno != c->trkseqno){ |
| 107 |
|
c = 0; |
| 108 |
|
if(seqno!=-1)cout << "PamLevel2::GetCaloStoredTrack(int) : requested tracker SeqNo "<< seqno <<" does not match Calorimeter stored tracks"<<endl; |
| 109 |
|
}; |
| 110 |
|
return c; |
| 111 |
|
|
| 112 |
|
}; |
| 113 |
|
//-------------------------------------- |
| 114 |
|
// |
| 115 |
|
// |
| 116 |
|
//-------------------------------------- |
| 117 |
|
/** |
| 118 |
|
* Retrieves the ToF track matching the seqno-th tracker stored track. |
| 119 |
|
* (If seqno = -1 retrieves the tracker-independent tof track) |
| 120 |
|
*/ |
| 121 |
|
ToFTrkVar *PamLevel2::GetToFStoredTrack(int seqno){ |
| 122 |
|
|
| 123 |
|
ToFTrkVar *c = 0; |
| 124 |
|
Int_t it_tof=0; |
| 125 |
|
|
| 126 |
|
do{ |
| 127 |
|
c = ToFLevel2::GetToFTrkVar(it_tof); |
| 128 |
|
it_tof++; |
| 129 |
|
} while( seqno != c->trkseqno && it_tof < ToFLevel2::ntrk()); |
| 130 |
|
|
| 131 |
|
if(seqno != c->trkseqno){ |
| 132 |
|
c = 0; |
| 133 |
|
if(seqno!=-1)cout << "PamLevel2::GetToFStoredTrack(int) : requested tracker SeqNo "<< seqno <<" does not match ToF stored tracks"<<endl; |
| 134 |
|
}; |
| 135 |
|
return c; |
| 136 |
|
|
| 137 |
|
}; |
| 138 |
|
|
| 139 |
|
//-------------------------------------- |
| 140 |
|
// |
| 141 |
|
// |
| 142 |
|
//-------------------------------------- |
| 143 |
|
/** |
| 144 |
|
* Give the pamela track associated to a tracker track, retrieving related calorimeter and tof track information. |
| 145 |
|
*/ |
| 146 |
|
PamTrack* PamLevel2::GetPamTrackAlong(TrkTrack* t){ |
| 147 |
|
|
| 148 |
|
CaloTrkVar *c = 0; |
| 149 |
|
ToFTrkVar *o = 0; |
| 150 |
|
|
| 151 |
|
c = GetCaloStoredTrack(t->GetSeqNo()); |
| 152 |
|
o = GetToFStoredTrack(t->GetSeqNo()); |
| 153 |
|
|
| 154 |
|
// if(t && c && o)track = new PamTrack(t,c,o); |
| 155 |
|
PamTrack *track = new PamTrack(t,c,o); |
| 156 |
|
|
| 157 |
|
return track; |
| 158 |
|
|
| 159 |
|
}; |
| 160 |
|
//-------------------------------------- |
| 161 |
|
// |
| 162 |
|
// |
| 163 |
|
//-------------------------------------- |
| 164 |
|
/** |
| 165 |
* Retrieves the it-th stored track. |
* Retrieves the it-th stored track. |
| 166 |
* It override TrkLevel2::GetTrack(int it). |
* It override TrkLevel2::GetTrack(int it). |
| 167 |
* @param itrk Track number, ranging from 0 to GetNTracks(). |
* @param itrk Track number, ranging from 0 to GetNTracks(). |
| 169 |
|
|
| 170 |
PamTrack* PamLevel2::GetStoredTrack(Int_t itrk){ |
PamTrack* PamLevel2::GetStoredTrack(Int_t itrk){ |
| 171 |
|
|
| 172 |
TrkTrack *t = 0; |
PamTrack *track = 0; |
| 173 |
CaloTrkVar *c = 0; |
|
| 174 |
ToFTrkVar *o = 0; |
if( itrk >=0 && itrk < TrkLevel2::ntrk() ){ |
| 175 |
|
|
| 176 |
if( itrk >=0 && itrk < TrkLevel2::ntrk() ){ |
TrkTrack *t = TrkLevel2::GetStoredTrack(itrk); |
| 177 |
t = TrkLevel2::GetStoredTrack(itrk); |
track = GetPamTrackAlong(t); |
| 178 |
/* c = CaloLevel2::GetCaloTrkVar(t->GetSeqNo()); |
|
|
o = ToFLevel2::GetToFTrkVar(t->GetSeqNo()); */ |
|
|
Int_t it_calo=0; |
|
|
do{ |
|
|
c = CaloLevel2::GetCaloTrkVar(it_calo); |
|
|
it_calo++; |
|
|
} while(t->GetSeqNo() != c->trkseqno && it_calo < CaloLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != c->trkseqno )cout << "PamLevel2::GetStoredTrack(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match Calorimeter SeqNo"<< c->trkseqno<<endl; |
|
|
|
|
|
Int_t it_tof=0; |
|
|
do{ |
|
|
o = ToFLevel2::GetToFTrkVar(it_tof); |
|
|
it_tof++; |
|
|
} while(t->GetSeqNo() != o->trkseqno && it_tof < ToFLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != o->trkseqno )cout << "PamLevel2::GetStoredTrack(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match ToF SeqNo "<< o->trkseqno <<endl; |
|
|
|
|
| 179 |
}else{ |
}else{ |
| 180 |
cout << "PamLevel2::GetStoredTrack(int) : tracker track SeqNo "<< itrk <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
cout << "PamLevel2::GetStoredTrack(int) : tracker track SeqNo "<< itrk <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
| 181 |
}; |
}; |
| 182 |
|
|
| 183 |
// hence create a "PamTrack" object |
return track; |
|
PamTrack *track = 0; |
|
|
if(t && c && o)track = new PamTrack(t,c,o); |
|
|
return track; |
|
| 184 |
|
|
| 185 |
} |
} |
| 186 |
//-------------------------------------- |
//-------------------------------------- |
| 188 |
// |
// |
| 189 |
//-------------------------------------- |
//-------------------------------------- |
| 190 |
/** |
/** |
| 191 |
* Sort physical (tracker) tracks and stores them in a TObjectArray (of TrkTrack objects). |
* Sort physical (tracker) tracks and stores them in the TRefArray (of TrkTrack objects) which pointer is PamLevel2::sorted_tracks. |
| 192 |
* The total number of physical tracks is given by GetNTracks() and the it-th physical track can be retrieved by means of the method GetTrack(int it). |
* @param how String to set the sorting cryterium (es: "CAL" or "TRK+CAL+TOF" ecc...). |
| 193 |
|
* Sorting cryteria: |
| 194 |
|
* TRK: lower chi**2 |
| 195 |
|
* CAL: lower Y spatial residual on the first calorimeter plane |
| 196 |
|
* TOF: bigger numebr of hit PMTs along the track, on S12 S21 S32 (where paddles are along the Y axis). |
| 197 |
|
* The default sorting cryterium is "TOF+CAL". |
| 198 |
|
* |
| 199 |
|
* The total number of physical tracks is always given by GetNTracks() and the it-th physical track can be retrieved by means of the methods GetTrack(int it) and GetTrack(int it, TString how). |
| 200 |
*/ |
*/ |
| 201 |
void PamLevel2::SortTracks(){ |
void PamLevel2::SortTracks(TString how){ |
| 202 |
|
|
| 203 |
sorted_tracks->Delete(); //temporaneo |
sorted_tracks->Delete(); //temporaneo |
| 204 |
// loop over the tracks sorted by the tracker |
// loop over the tracks sorted by the tracker |
| 205 |
|
Bool_t use_TRK = how.Contains("TRK", TString::kIgnoreCase); |
| 206 |
|
Bool_t use_CAL = how.Contains("CAL", TString::kIgnoreCase); |
| 207 |
|
Bool_t use_TOF = how.Contains("TOF", TString::kIgnoreCase); |
| 208 |
|
|
| 209 |
|
|
| 210 |
for(Int_t i=0; i < TrkLevel2::GetNTracks(); i++){ |
for(Int_t i=0; i < TrkLevel2::GetNTracks(); i++){ |
| 211 |
|
|
| 212 |
TrkTrack *ts = 0; |
TrkTrack *ts = 0; |
| 213 |
|
|
| 214 |
// get tracker tracks |
// get tracker tracks |
| 215 |
TrkTrack *tp = TrkLevel2::GetTrack(i); //tracker |
TrkTrack *tp = TrkLevel2::GetTrack(i); //tracker |
| 216 |
CaloTrkVar *cp = CaloLevel2::GetCaloTrkVar(tp->GetSeqNo()); //calorimeter |
CaloTrkVar *cp = GetCaloStoredTrack(tp->GetSeqNo()); |
| 217 |
ToFTrkVar *op = ToFLevel2::GetToFTrkVar(tp->GetSeqNo()); //tof |
ToFTrkVar *op = GetToFStoredTrack(tp->GetSeqNo()); |
| 218 |
|
|
| 219 |
// if track has an image, check image selection |
// if track has an image, check image selection |
| 220 |
if(tp->HasImage()){ |
if(tp->HasImage()){ |
| 221 |
|
|
| 222 |
TrkTrack *ti = TrkLevel2::GetTrackImage(i); //tracker (image) |
TrkTrack *ti = TrkLevel2::GetTrackImage(i); //tracker (image) |
| 223 |
CaloTrkVar *ci = CaloLevel2::GetCaloTrkVar(ti->GetSeqNo());//calorimeter (image) |
CaloTrkVar *ci = GetCaloStoredTrack(ti->GetSeqNo()); |
| 224 |
ToFTrkVar *oi = ToFLevel2::GetToFTrkVar(ti->GetSeqNo()); //tof (image) |
ToFTrkVar *oi = GetToFStoredTrack(ti->GetSeqNo()); |
| 225 |
|
|
| 226 |
//assign starting scores |
//assign starting scores |
| 227 |
Int_t tp_score = 1; //"principal" track, sorted by the tracker |
Int_t tp_score = 0; //main track sorted by the tracker |
| 228 |
Int_t ti_score = 0; //image track |
Int_t ti_score = 0; //image track |
| 229 |
|
|
| 230 |
// ------------------------ |
// ------------------------ |
| 231 |
// calorimeter check |
// calorimeter check |
| 232 |
// ------------------------ |
// ------------------------ |
| 233 |
|
// check the Y spatial residual on the first calorimeter plane |
| 234 |
|
// (cut on calorimeter variables from Emiliano) |
| 235 |
if( |
if( |
| 236 |
npcfit[1] > 3 && //no. of fit planes on Y view |
use_CAL && |
| 237 |
// varcfit[1] < 50.&& //fit variance on Y view |
npcfit[1] > 15 && //no. of fit planes on Y view |
| 238 |
true){ |
varcfit[1] < 1000. && //fit variance on Y view |
| 239 |
|
true){ |
| 240 |
|
|
| 241 |
Float_t resy_p = cp->tbar[0][1] - cbar[0][1];if(resy_p < 0)resy_p= - resy_p; |
Float_t resy_p = cp->tbar[0][1] - cbar[0][1]; if(resy_p < 0)resy_p= - resy_p; |
| 242 |
Float_t resy_i = ci->tbar[0][1] - cbar[0][1];if(resy_i < 0)resy_i= - resy_i; |
Float_t resy_i = ci->tbar[0][1] - cbar[0][1]; if(resy_i < 0)resy_i= - resy_i; |
| 243 |
|
|
| 244 |
if(resy_p <= resy_i) tp_score++; |
if(resy_p <= resy_i) tp_score++; |
| 245 |
else ti_score++; |
else ti_score++; |
| 247 |
// ------------------------ |
// ------------------------ |
| 248 |
// TOF check |
// TOF check |
| 249 |
// ------------------------ |
// ------------------------ |
| 250 |
|
// check the number of hit pmts along the track |
| 251 |
|
// on S12 S21 and S32, where paddles are parallel to Y axis |
| 252 |
|
Int_t nphit_p =0; |
| 253 |
|
Int_t nphit_i =0; |
| 254 |
|
|
| 255 |
|
for (Int_t ih=0; ih < op->npmtadc; ih++){ |
| 256 |
|
Int_t pl = GetPlaneIndex( (op->pmtadc).At(ih) ); |
| 257 |
|
if(pl == 1 || pl == 2 || pl == 5)nphit_p++; |
| 258 |
|
}; |
| 259 |
|
|
| 260 |
|
for (Int_t ih=0; ih < oi->npmtadc; ih++){ |
| 261 |
|
Int_t pl = GetPlaneIndex( (oi->pmtadc).At(ih) ); |
| 262 |
|
if(pl == 1 || pl == 2 || pl == 5)nphit_i++; |
| 263 |
|
}; |
| 264 |
|
|
| 265 |
|
if( |
| 266 |
|
use_TOF && |
| 267 |
|
(nphit_p+nphit_i) !=0 && |
| 268 |
|
true){ |
| 269 |
|
|
| 270 |
|
if( nphit_p >= nphit_i) tp_score++; |
| 271 |
|
else ti_score++; |
| 272 |
|
}; |
| 273 |
|
|
| 274 |
|
if(tp_score == ti_score) use_TRK = true; |
| 275 |
|
// ------------------------ |
| 276 |
|
// tracker check |
| 277 |
|
// ------------------------ |
| 278 |
|
// chi**2 difference is not always large enough to distinguish among |
| 279 |
|
// the real track and its image. |
| 280 |
|
// Tracker check will be applied always when calorimeter and tof information is ambiguous. |
| 281 |
|
if(use_TRK){ |
| 282 |
|
if( tp->chi2 > 0 && tp->chi2 < ti->chi2 ) tp_score++ ; |
| 283 |
|
else if( ti->chi2 > 0 && ti->chi2 < tp->chi2 ) ti_score++ ; |
| 284 |
|
}; |
| 285 |
|
|
| 286 |
// ------------------------ |
// ------------------------ |
| 287 |
// the winner is.... |
// the winner is.... |
| 288 |
// ------------------------ |
// ------------------------ |
| 289 |
if(tp_score > ti_score) ts = tp;//the track sorted by the tracker!! |
if (tp_score > ti_score) ts = tp;//the track sorted by the tracker!! |
| 290 |
else ts = ti;//its image!! |
else if (tp_score < ti_score) ts = ti;//its image!! |
| 291 |
|
else { |
| 292 |
|
ts = tp; |
| 293 |
|
// cout << "Warning - track image ambiguity not solved" << endl; |
| 294 |
|
// cout << ts->GetNtot() << " "<< ts->chi2 << " " << npcfit[1] << " "<< nphit_p << endl; |
| 295 |
|
}; |
| 296 |
|
|
| 297 |
}else{ |
}else{ |
| 298 |
ts = tp; |
ts = tp; |
| 312 |
* PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information. |
* PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information. |
| 313 |
*/ |
*/ |
| 314 |
TRefArray *PamLevel2::GetTracks(){ |
TRefArray *PamLevel2::GetTracks(){ |
| 315 |
// if(!sorted_tracks->GetEntries()) SortTracks(); |
SortTracks("+CAL+TOF"); |
|
SortTracks(); |
|
| 316 |
return sorted_tracks; |
return sorted_tracks; |
| 317 |
}; |
}; |
| 318 |
//-------------------------------------- |
//-------------------------------------- |
| 319 |
// |
// |
| 320 |
// |
// |
| 321 |
//-------------------------------------- |
//-------------------------------------- |
| 322 |
/** |
/** |
| 323 |
* Retrieves the it-th Pamela "physical" track. |
* Retrieves the it-th Pamela "physical" track. |
| 325 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
| 326 |
*/ |
*/ |
| 327 |
PamTrack *PamLevel2::GetTrack(int it){ |
PamTrack *PamLevel2::GetTrack(int it){ |
|
|
|
|
SortTracks(); |
|
| 328 |
|
|
| 329 |
TrkTrack *t = 0; |
// *-*-*-*-*-*-* |
| 330 |
CaloTrkVar *c = 0; |
SortTracks("+CAL+TOF"); |
| 331 |
ToFTrkVar *o = 0; |
// *-*-*-*-*-*-* |
| 332 |
|
|
| 333 |
|
PamTrack *track = 0; |
| 334 |
|
|
| 335 |
if( it >=0 && it < TrkLevel2::GetNTracks() ){ |
if( it >=0 && it < TrkLevel2::GetNTracks() ){ |
| 336 |
|
TrkTrack *t = (TrkTrack*)sorted_tracks->At(it); |
| 337 |
t = (TrkTrack*)sorted_tracks->At(it); |
track = GetPamTrackAlong(t); |
|
|
|
|
Int_t it_calo=0; |
|
|
do{ |
|
|
c = CaloLevel2::GetCaloTrkVar(it_calo); |
|
|
it_calo++; |
|
|
} while(t->GetSeqNo() != c->trkseqno && it_calo < CaloLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != c->trkseqno )cout << "PamLevel2::GetTrack(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match Calorimeter SeqNo"<< c->trkseqno<<endl; |
|
|
|
|
|
Int_t it_tof=0; |
|
|
do{ |
|
|
o = ToFLevel2::GetToFTrkVar(it_tof); |
|
|
it_tof++; |
|
|
} while(t->GetSeqNo() != o->trkseqno && it_tof < ToFLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != o->trkseqno )cout << "PamLevel2::GetTrack(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match ToF SeqNo "<< o->trkseqno <<endl; |
|
|
|
|
| 338 |
}else{ |
}else{ |
| 339 |
cout << "PamLevel2::GetTrack(int) : tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
cout << "PamLevel2::GetTrack(int) : tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
| 340 |
}; |
}; |
|
|
|
|
// hence create a "PamTrack" object |
|
|
PamTrack *track = 0; |
|
|
if(t && c && o)track = new PamTrack(t,c,o); |
|
| 341 |
|
|
| 342 |
return track; |
return track; |
| 343 |
|
|
| 344 |
}; |
}; |
| 345 |
|
|
| 346 |
//-------------------------------------- |
//-------------------------------------- |
| 347 |
// |
// |
| 348 |
// |
// |
| 349 |
//-------------------------------------- |
//-------------------------------------- |
| 350 |
/** |
/** |
| 351 |
* Retrieves (if present) the image of the it-th Pamela "physical" track, sorted by the method PamLevel2::GetTracks(). |
* Retrieves (if present) the image of the it-th Pamela "physical" track, sorted by the method PamLevel2::SortTracks(). |
| 352 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
| 353 |
*/ |
*/ |
| 354 |
PamTrack *PamLevel2::GetTrackImage(int it){ |
PamTrack *PamLevel2::GetTrackImage(int it){ |
| 355 |
|
|
| 356 |
// if(!sorted_tracks->GetEntries()) SortTracks(); |
SortTracks("+CAL+TOF"); |
|
SortTracks(); |
|
| 357 |
|
|
| 358 |
TrkTrack *t = 0; |
PamTrack *image = 0; |
|
CaloTrkVar *c = 0; |
|
|
ToFTrkVar *o = 0; |
|
| 359 |
|
|
| 360 |
if( it >=0 && it < TrkLevel2::GetNTracks() ){ |
if( it >=0 && it < TrkLevel2::GetNTracks() ){ |
| 361 |
TrkTrack *temp = (TrkTrack*)sorted_tracks->At(it); |
TrkTrack *temp = (TrkTrack*)sorted_tracks->At(it); |
| 362 |
if( temp->HasImage() ){ |
if( temp->HasImage() ){ |
| 363 |
|
TrkTrack *t = TrkLevel2::GetStoredTrack(temp->GetImageSeqNo()); |
| 364 |
t = TrkLevel2::GetStoredTrack(temp->GetImageSeqNo()); |
image = GetPamTrackAlong(t); |
|
|
|
|
/* c = CaloLevel2::GetCaloTrkVar(temp->GetImageSeqNo()); |
|
|
o = ToFLevel2::GetToFTrkVar(temp->GetImageSeqNo());*/ |
|
|
|
|
|
Int_t it_calo=0; |
|
|
do{ |
|
|
c = CaloLevel2::GetCaloTrkVar(it_calo); |
|
|
it_calo++; |
|
|
} while(t->GetSeqNo() != c->trkseqno && it_calo < CaloLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != c->trkseqno )cout << "PamLevel2::GetTrackImage(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match Calorimeter SeqNo"<< c->trkseqno<<endl; |
|
|
|
|
|
Int_t it_tof=0; |
|
|
do{ |
|
|
o = ToFLevel2::GetToFTrkVar(it_tof); |
|
|
it_tof++; |
|
|
} while(t->GetSeqNo() != o->trkseqno && it_tof < ToFLevel2::ntrk()); |
|
|
if( t->GetSeqNo() != o->trkseqno )cout << "PamLevel2::GetTrackImage(int) : tracker SeqNo "<< t->GetSeqNo() <<" does not match ToF SeqNo "<< o->trkseqno <<endl; |
|
| 365 |
}else{ |
}else{ |
| 366 |
cout <<"PamLevel2::GetTrackImage(int) : Track SeqNo "<<it<<" does not have image"<<endl; |
cout <<"PamLevel2::GetTrackImage(int) : Track SeqNo "<<it<<" does not have image"<<endl; |
| 367 |
}; |
}; |
| 369 |
cout << "PamLevel2::GetTrackImage(int) : Tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
cout << "PamLevel2::GetTrackImage(int) : Tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl; |
| 370 |
}; |
}; |
| 371 |
|
|
|
// hence create a "PamTrack" object |
|
|
PamTrack *image = 0; |
|
|
if(t && c && o)image = new PamTrack(t,c,o); |
|
|
|
|
| 372 |
return image; |
return image; |
|
|
|
| 373 |
} |
} |
| 374 |
|
|
| 375 |
//-------------------------------------- |
//-------------------------------------- |
| 476 |
// |
// |
| 477 |
//-------------------------------------- |
//-------------------------------------- |
| 478 |
/** |
/** |
| 479 |
* Get the Pamela detector trees in a single file and make them friends. |
* Get all the Pamela detector trees in a single file and make them friends. |
| 480 |
* @param f TFile pointer |
* @param f TFile pointer |
| 481 |
* @return Pointer to a TTree |
* @return Pointer to a TTree |
| 482 |
*/ |
*/ |
| 821 |
// |
// |
| 822 |
//-------------------------------------- |
//-------------------------------------- |
| 823 |
/** |
/** |
| 824 |
* Check if a file contains required trees. |
* Check if a file contains selected Pamela Level2 trees. |
| 825 |
* @param name File name |
* @param name File name |
| 826 |
* @return Pointer to a TChain |
* @return Pointer to a TChain |
| 827 |
*/ |
*/ |