--- PamelaLevel2/src/PamLevel2.cpp 2008/09/30 07:45:24 1.63 +++ PamelaLevel2/src/PamLevel2.cpp 2008/11/06 10:45:36 1.65 @@ -284,6 +284,7 @@ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; candeleteobj = 0; pscore = 0; iscore = 0; @@ -295,17 +296,19 @@ /** * Constructor */ -PamTrack::PamTrack(TrkTrack* t, CaloTrkVar* c, ToFTrkVar* o){ +PamTrack::PamTrack(TrkTrack* t, CaloTrkVar* c, ToFTrkVar* o, OrbitalInfoTrkVar *r){ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; // if(t)trk_track = new TrkTrack(*t); // if(c)calo_track = new CaloTrkVar(*c); // if(o)tof_track = new ToFTrkVar(*o); if(t)trk_track = t; if(c)calo_track = c; if(o)tof_track = o; + if(r)orb_track = r; candeleteobj = 0; }; @@ -314,13 +317,16 @@ TrkTrack *t = track.trk_track; CaloTrkVar *c = track.calo_track; ToFTrkVar *o = track.tof_track; + OrbitalInfoTrkVar *r = track.orb_track; trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; if(t)trk_track = new TrkTrack(*t); if(c)calo_track = new CaloTrkVar(*c); if(o)tof_track = new ToFTrkVar(*o); + if(r)orb_track = new OrbitalInfoTrkVar(*r); candeleteobj = 1; } @@ -331,10 +337,12 @@ if(trk_track) trk_track->TrkTrack::Clear(); if(calo_track) calo_track->CaloTrkVar::Clear();//??? if(tof_track) tof_track->ToFTrkVar::Clear();//??? + if(orb_track) orb_track->OrbitalInfoTrkVar::Clear();//??? }else{ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; } pscore = 0; iscore = 0; @@ -355,6 +363,10 @@ tof_track->ToFTrkVar::Clear();//??? delete tof_track; } + if(orb_track){ + orb_track->OrbitalInfoTrkVar::Clear();//??? + delete orb_track; + } }else{ Clear(); } @@ -710,7 +722,7 @@ Bool_t PamLevel2::IsGood(){ Bool_t goodev=true; - // if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; + if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; if(calo2_obj && calo2_obj->good != 1) goodev = false; if(tof_obj && tof_obj->unpackError != 0) goodev = false; if(trig_obj && trig_obj->unpackError != 0) goodev = false; @@ -744,7 +756,10 @@ return &trk2_obj; }; if(!objname.CompareTo("TrkHough")) { - if(!trkh_obj) trkh_obj = new TrkHough(); + if(!trkh_obj) { + trkh_obj = new TrkHough(); + trkh_obj->Set(); + } return &trkh_obj; }; if(!objname.CompareTo("CaloLevel1")) { @@ -866,7 +881,40 @@ // //-------------------------------------- /** - * Give the pamela track associated to a tracker track, retrieving related calorimeter and tof track information. + * Retrieves the OrbitalInfo track matching the seqno-th tracker stored track. + * (If seqno = -1 retrieves the tracker-independent tof related track) + */ +OrbitalInfoTrkVar *PamLevel2::GetOrbitalInfoStoredTrack(int seqno){ + + if( !orb_obj )return 0; + + if( orb_obj->OrbitalInfo::ntrk()==0 ){ + cout << "PamLevel2::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo "<< seqno <<" but no OrbitalInfo tracks are stored"<OrbitalInfo::GetOrbitalInfoTrkVar(it_tof); + it_tof++; + } while( c && seqno != c->trkseqno && it_tof < orb_obj->OrbitalInfo::ntrk()); + + if(!c || seqno != c->trkseqno){ + c = 0; + if(seqno!=-1)cout << "PamLevel2::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo "<< seqno <<" does not match OrbitalInfo stored tracks"<GetSeqNo()); if(TOF) o = GetToFStoredTrack(t->GetSeqNo()); + if(ORB) r = GetOrbitalInfoStoredTrack(t->GetSeqNo()); // if(t && c && o)track = new PamTrack(t,c,o); - PamTrack *track = new PamTrack(t,c,o); + PamTrack *track = new PamTrack(t,c,o,r); return track; @@ -898,7 +948,7 @@ PamTrack* PamLevel2::GetStoredTrack(Int_t itrk){ cout <<"PamLevel2::GetStoredTrack(Int_t itrk) **to-be-updated** "<TrkLevel2::GetTrack(i); //tracker CaloTrkVar *cp = GetCaloStoredTrack(tp->GetSeqNo()); ToFTrkVar *op = GetToFStoredTrack(tp->GetSeqNo()); + OrbitalInfoTrkVar *rp = GetOrbitalInfoStoredTrack(tp->GetSeqNo()); TrkTrack *ti = 0; //tracker (image) CaloTrkVar *ci = 0; ToFTrkVar *oi = 0; + OrbitalInfoTrkVar *ri = 0; // cout << "trk track n. "<TrkLevel2::GetTrackImage(i); //tracker (image) ci = GetCaloStoredTrack(ti->GetSeqNo()); oi = GetToFStoredTrack(ti->GetSeqNo()); + ri = GetOrbitalInfoStoredTrack(ti->GetSeqNo()); // cout << "its image "<SetPScore(totp_score); ((PamTrack*)(ttsorted[i]))->SetIScore(toti_score); @@ -2683,7 +2740,15 @@ // -------------------------------------- // ---> exit with TRUE // -------------------------------------- - cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<ID<<" irun "<ID<<" irun "<IsConnected()) )SetDBConnection(); + TrkParams::Set(GetRunInfo() ,dbc); + if(dbc)dbc->Close(); + // ---------------------------------------------------- // then check if the run has a fragment // in this case we have to switch to the next fragment @@ -2692,6 +2757,7 @@ if( GetRunInfo()->ID_RUN_FRAG != 0 && // GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID && + DBG && true ){ cout << "* fragment *"<> "<RUNHEADER_OBT<<" "<RUNTRAILER_OBT; cout << " *** JUMP RUN *** irun "<> "<RUNHEADER_OBT<<" "<RUNTRAILER_OBT; } - cout << endl; - cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<ID<<" (run-entry "<ID<<" (run-entry "<IsConnected()) )SetDBConnection(); + TrkParams::Set(GetRunInfo() ,dbc); + if(dbc)dbc->Close(); // cout << endl; prevshift = 0; return true; @@ -3843,17 +3914,17 @@ // } if ( TRK0 ){ - TrkParams::Load(6); - if( !TrkParams::IsLoaded(6) ){ - cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- VK-mask not loaded"<IsConnected()))SetDBConnection(); +// TrkParams::Load(6); +// if( !TrkParams::IsLoaded(6) ){ +// cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- VK-mask not loaded"<IsConnected()))SetDBConnection(); TrkParams::SetCalib(run_obj,dbc); TrkParams::LoadCalib( ); if( !TrkParams::CalibIsLoaded() ){ cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- Calibration not loaded"<Close(); // EMILIANO, do not leave open connections, open only when needed +// if(dbc)dbc->Close(); // EMILIANO, do not leave open connections, open only when needed } @@ -3922,8 +3993,8 @@ do{ if(shift>0){ cout << " PKTNUM L2 --- "<< pktn << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<ID << " ID_ROOT_L0 "<ID_ROOT_L0<<" ID_RUN_FRAG "<ID_RUN_FRAG << " EV_FROM "<EV_FROM < L0 mismatch ( irun "<ID << " ID_ROOT_L0 "<ID_ROOT_L0<<" ID_RUN_FRAG "<ID_RUN_FRAG << " EV_FROM "<EV_FROM < L0 mismatch ( irun "<GetEntry(quellagiusta+(Long64_t)shift+(Long64_t)prevshift); shift++; @@ -3971,6 +4042,7 @@ */ Bool_t PamLevel2::SetDBConnection(){ +// cout << "PamLevel2::SetDBConnection()" << endl; if(DBG){ cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<