/*  plot hits and fitted track from a given snarl #  */

void plotTrack(int snarl,float phcut = 3.) {

    char s_snarl[15];
    char s_phcut[10];

    sprintf(s_snarl, "%d", snarl);
    sprintf(s_phcut, "%f", phcut);
    
    TString s_snarl_cut("fHeader.fSnarl==");
    s_snarl_cut.Append(s_snarl);
  
    TCut snarl_cut = s_snarl_cut.Data() ;

    TTree* reco = dynamic_cast<TTree*>(gDirectory->Get("NtpSR"));
    TTree* fitsa = dynamic_cast<TTree*>(gDirectory->Get("NtpFitSA"));

    reco->AddFriend(fitsa);

    TString s_ph_cut;
    s_ph_cut = TString("(stp.ph0.pe+stp.ph1.pe) > ") + TString(s_phcut);
    TCut ph_cut = s_ph_cut.Data();

    
    // View cut
    TCut uview_cut("stp.planeview==3");
    TCut vview_cut("stp.planeview==2");
    
    TCut uview_cut_t("stp[trk.stp].planeview==3");
    TCut vview_cut_t("stp[trk.stp].planeview==2");
    
    // Canvas
    TCanvas* cT;
    cT = (TCanvas*) gROOT->FindObject("cT");
    if ( !cT ) {
        cT = new TCanvas("cT");
        cT->Divide(1,2);
    }
    
    // strips that belong to the track
    TString s_ph_track_cut;
    s_ph_track_cut = TString("(stp[trk.stp].ph0.pe+stp[trk.stp].ph1.pe) > ")
        + TString(s_phcut);
    TCut ph_track_cut = s_ph_track_cut.Data();

    reco->SetMarkerStyle(20);
    reco->SetMarkerSize(1.);
    reco->SetMarkerColor(4);
    
    // u
    cT->cd(1);
    reco->Draw("stp[trk.stp].tpos:stp[trk.stp].plane", snarl_cut + ph_track_cut + uview_cut_t);
    // v
    cT->cd(2);
    reco->Draw("stp[trk.stp].tpos:stp[trk.stp].plane", snarl_cut + ph_track_cut + vview_cut_t);
    
    // all strips
    reco->SetMarkerStyle(24);
    reco->SetMarkerSize(1.8);
    reco->SetMarkerColor(1);
    // u
    cT->cd(1);
    reco->Draw("stp.tpos:stp.plane",snarl_cut + uview_cut,"same");
    // v
    cT->cd(2);
    reco->Draw("stp.tpos:stp.plane",snarl_cut + vview_cut,"same");

    // strips that pass ph cut
    reco->SetMarkerStyle(24);
    reco->SetMarkerSize(1.2);
    reco->SetMarkerColor(2);
    // u
    cT->cd(1);
    reco->Draw("stp.tpos:stp.plane",snarl_cut + ph_cut + uview_cut,"same");
    // v
    cT->cd(2);
    reco->Draw("stp.tpos:stp.plane",snarl_cut + ph_cut + vview_cut,"same");

    // track
    
    reco->SetMarkerStyle(20);
    reco->SetMarkerSize(.4);
    reco->SetMarkerColor(6);
    // u 
    cT->cd(1);
    reco->Draw("fitsa.v[0]:fitsa.iplane[0]",snarl_cut,"same");
    // v
    cT->cd(2);
    reco->Draw("fitsa.u[0]:fitsa.iplane[0]",snarl_cut,"same");
    
    // reversed track
    reco->SetMarkerStyle(20);
    reco->SetMarkerSize(.4);
    reco->SetMarkerColor(3);
    // u 
    cT->cd(1);
    reco->Draw("fitsa.v[1]:fitsa.iplane[1]",snarl_cut,"same");
    // v
    cT->cd(2);
    reco->Draw("fitsa.u[1]:fitsa.iplane[1]",snarl_cut,"same");
    

    TLatex sn;
    sn.SetNDC();
    TString s_snarl_text("Snarl ");
    s_snarl_text.Append(s_snarl);
    sn.DrawLatex(0.8,0.9,s_snarl_text.Data());

    cT->cd();
}
