///////////////////////////////////////////////////////// // This class has been automatically generated // (Mon Sep 24 10:55:41 2001 by ROOT version3.01/06) // from TTree tuple/Selex reconstruction data // found on file: /export/data/ayan/passII_root_data/oc0_vee_1.root ////////////////////////////////////////////////////////// #ifndef s_h #define s_h #include #include #include class s { public : TTree *fChain; //pointer to the analyzed TTree or TChain Int_t fCurrent; //current Tree number in a TChain //Declaration of leaves types Float_t RN_run; Float_t RN_event; Float_t RN_ID; Float_t RN_x0b; Float_t RN_y0b; Float_t RN_Pxb; Float_t RN_Pyb; Float_t RN_Pzb; Float_t RN_Pidb; Float_t RN_Xp; Float_t RN_Yp; Float_t RN_Zp; Float_t RN_Sxp; Float_t RN_Syp; Float_t RN_Szp; Float_t RN_Pchi; Float_t RN_Pnf; Float_t RN_Pnt; Float_t RN_mass; Float_t RN_Pxs; Float_t RN_Pys; Float_t RN_Pzs; Float_t RN_Es; Float_t RN_Xs; Float_t RN_Ys; Float_t RN_Zs; Float_t RN_Sxs; Float_t RN_Sys; Float_t RN_Szs; Float_t RN_Schi; Float_t RN_Isol; Float_t RN_mass2; Float_t RN_Pxs2; Float_t RN_Pys2; Float_t RN_Pzs2; Float_t RN_Es2; Float_t RN_Xs2; Float_t RN_Ys2; Float_t RN_Zs2; Float_t RN_Sxs2; Float_t RN_Sys2; Float_t RN_Szs2; Float_t RN_Schi2; Float_t RN_Isol2; Float_t RN_tgt; Float_t RN_nt; Float_t RN_ns; Float_t RN_Xf; Float_t RN_Pt; Float_t RN_L; Float_t RN_S; Float_t RN_LoS; Float_t RN_pvtx; Float_t RN_smin; Float_t RN_scut; Float_t RN_X0t1; Float_t RN_Y0t1; Float_t RN_Pxt1; Float_t RN_Pyt1; Float_t RN_Pzt1; Float_t RN_chit1; Float_t RN_masst1; Float_t RN_pidt1; Float_t RN_pmtrkt1; Float_t RN_pid1t1; Float_t RN_pid2t1; Float_t RN_mvert_t1; Float_t RN_X0t2; Float_t RN_Y0t2; Float_t RN_Pxt2; Float_t RN_Pyt2; Float_t RN_Pzt2; Float_t RN_chit2; Float_t RN_masst2; Float_t RN_pidt2; Float_t RN_pmtrkt2; Float_t RN_pid1t2; Float_t RN_pid2t2; Float_t RN_mvert_t2; Float_t RN_X0t3; Float_t RN_Y0t3; Float_t RN_Pxt3; Float_t RN_Pyt3; Float_t RN_Pzt3; Float_t RN_chit3; Float_t RN_masst3; Float_t RN_pidt3; Float_t RN_pmtrkt3; Float_t RN_pid1t3; Float_t RN_pid2t3; Float_t RN_mvert_t3; Float_t RN_X0t4; Float_t RN_Y0t4; Float_t RN_Pxt4; Float_t RN_Pyt4; Float_t RN_Pzt4; Float_t RN_chit4; Float_t RN_masst4; Float_t RN_pidt4; Float_t RN_pmtrkt4; Float_t RN_pid1t4; Float_t RN_pid2t4; Float_t RN_mvert_t4; Float_t RN_X0t5; Float_t RN_Y0t5; Float_t RN_Pxt5; Float_t RN_Pyt5; Float_t RN_Pzt5; Float_t RN_chit5; Float_t RN_masst5; Float_t RN_pidt5; Float_t RN_pmtrkt5; Float_t RN_pid1t5; Float_t RN_pid2t5; Float_t RN_mvert_t5; Float_t RN_X0t6; Float_t RN_Y0t6; Float_t RN_Pxt6; Float_t RN_Pyt6; Float_t RN_Pzt6; Float_t RN_chit6; Float_t RN_masst6; Float_t RN_pidt6; Float_t RN_pmtrkt6; Float_t RN_pid1t6; Float_t RN_pid2t6; Float_t RN_mvert_t6; Float_t RN_X0t7; Float_t RN_Y0t7; Float_t RN_Pxt7; Float_t RN_Pyt7; Float_t RN_Pzt7; Float_t RN_chit7; Float_t RN_masst7; Float_t RN_pidt7; Float_t RN_pmtrkt7; Float_t RN_pid1t7; Float_t RN_pid2t7; Float_t RN_mvert_t7; Float_t RN_X0t8; Float_t RN_Y0t8; Float_t RN_Pxt8; Float_t RN_Pyt8; Float_t RN_Pzt8; Float_t RN_chit8; Float_t RN_masst8; Float_t RN_pidt8; Float_t RN_pmtrkt8; Float_t RN_pid1t8; Float_t RN_pid2t8; Float_t RN_mvert_t8; Float_t RN_X0t9; Float_t RN_Y0t9; Float_t RN_Pxt9; Float_t RN_Pyt9; Float_t RN_Pzt9; Float_t RN_chit9; Float_t RN_masst9; Float_t RN_pidt9; Float_t RN_pmtrkt9; Float_t RN_pid1t9; Float_t RN_pid2t9; Float_t RN_mvert_t9; Float_t RN_chi_rv02; Float_t RN_dca_rv02; Float_t RN_tet_rv02; Float_t RN_pd_ph; Float_t RN_chi_rv01; Float_t RN_dca_rv01; Float_t RN_pidtrk_rv01; Float_t RN_pd_ph_b; Float_t RN_chi_rv0b; Float_t RN_dca_rv0b; Float_t RN_z_rv0b; Float_t RN_vid_rv01b; Float_t RN_vid_rv02b; Float_t RN_status_rv0; //List of branches TBranch *b_RN; char decayid[3]; int idecay; char ps_filename[80]; char pavetext[256]; char *cid [9]; Float_t kaonprob[4]; Float_t pionprob[4]; s(TTree *tree=0); ~s(); Int_t Cut(Int_t entry); Int_t GetEntry(Int_t entry); Int_t LoadTree(Int_t entry); Int_t TgtVol(Int_t entry); // new 6/19/01 L. Dauwe Int_t PzBeam(Int_t entry); // new 6/15/01 L. Dauwe Int_t PartidBeam(Int_t entry); // new 6/22/01 L. Dauwe Int_t Daughter_Is_A_Pion(Int_t entry); Int_t Daughter_Is_A_Kaon(Int_t entry); Int_t Mvert_Part(Int_t entry, Int_t ver_indx, Float_t Momentum, const char *part_name); Int_t DaughterKaonProb(Int_t entry); Int_t DaughterPionProb(Int_t entry); Int_t MinOfTrk2Trk3(Int_t entry, float mom_thres ); Int_t MinOfTrk2(Int_t entry, float mom_thres); void kp(Int_t entry); Int_t Event_Reject(Int_t entry); Int_t TrkChi2(Int_t entry, Int_t ver_indx); Double_t Trk_p(Int_t entry, Int_t trk); // calculate track momentum Double_t Oi_p_asym(Int_t entry); // 850 Ome- pi+ momentum asymmetry Double_t oiiipt(Int_t entry); Double_t oipt(Int_t entry); Double_t sum_pt2(Int_t entry); Double_t sum_pt(Int_t entry); Double_t pts(Int_t entry); Float_t smin(Int_t entry, Int_t position); void Lambda0(Int_t entry) ; Int_t Angle_Vector(Int_t entry); Double_t ProperTime(Int_t entry,Int_t loversigma); Double_t Cos_Theta(Int_t entry); Int_t kk827(Int_t entry) ; Int_t pid828(Int_t entry); Int_t pid829(Int_t entry); Int_t pid850(Int_t entry); Int_t BeamId(Int_t entry); Int_t VidPionProb(Int_t entry) ; Int_t Vid_Is_APion(Int_t entry); Int_t VidKaonProb(Int_t entry) ; Int_t Vid_Is_AKaon(Int_t entry); Double_t ReCalc4(Int_t entry); Double_t ReCalc2(Int_t entry); Double_t NewMass(Int_t entry); Double_t Drmass(Int_t entry); Double_t DaughterMom(Int_t entry); void Slice2DHisto(TH2F *hp); void Order(int *p,int *q); void Bubble(int *a,int n); void hex2bin(Int_t n); Int_t FindParticle(Int_t entry, const char *part_name); void GenerateEmbedFile(Int_t entry); void DumpEvent(Int_t entry); void NoteEvent(Int_t entry); void Init(TTree *tree); void Loop(); void Show(Int_t entry = -1); void Track_Print(Int_t entry); void Histo_Normalizer(); void ProperTimePlot(); void OmeZs2ProTime(); Bool_t Notify(); }; #endif #ifdef s_cxx s::s(TTree *tree) { // if parameter tree is not specified (or zero), connect the file // used to generate this class and read the Tree. if (tree == 0) { #ifdef SINGLE_TREE // The following code should be used if you want this class to access // a single tree instead of a chain TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("Memory Directory"); if (!f) { f = new TFile("Memory Directory"); f->cd("Rint:/"); } tree = (TTree*)gDirectory->Get("tuple"); #else // SINGLE_TREE // The following code should be used if you want this class to access a chain // of trees. TChain * chain = new TChain("tuple",""); //chain->Add("/home/ayan/passIIdata/p2b01.root"); //chain->Add("/home/ayan/passIIdata/p2b02.root"); //chain->Add("/home/ayan/passIIdata/p2c01.root"); //chain->Add("/home/ayan/passIIdata/p2d01.root"); //chain->Add("/home/ayan/passIIdata/p2e01.root"); //chain->Add("/home/ayan/passIIdata/p2f01.root"); //chain->Add("/home/ayan/passIIdata/p2g01.root"); //chain->Add("/home/ayan/passIIdata/p2h01.root"); //chain->Add("/home/ayan/passIIdata/p2p01.root"); //chain->Add("/home/ayan/passIIdata/p2x01.root"); //chain->Add("/home/ayan/passIIdata/p2z02.root"); //chain->Add("/home/ayan/passIIdata/p2u01.root");//unfiltered //chain->Add("/home/ayan/passIIdata/p2z01.root");//same runs as p2z02 //Monte Carlo chain->Add("/home/ayan/Monte_Carlo/xf0/500K/oc0_oiii-xf0.root1"); chain->Add("/home/ayan/Monte_Carlo/xf0/500K/oc0_oi-xf0.root1"); //chain->Add("/home/ayan/Monte_Carlo/xf0/500K/oc0_xkii-xf0.root"); //chain->Add("/home/ayan/Monte_Carlo/xf3/500K/oc0_oiii_l0k-_xf3.root1"); //chain->Add("/home/ayan/Monte_Carlo/xf3/500K/oc0_oiii_l0k-_xf3.root2"); //chain->Add("/home/ayan/Monte_Carlo/xf3/500K/oc0_oi_l0k-_xf3.root1"); //chain->Add("/home/ayan/Monte_Carlo/xf3/500K/oc0_oi_l0k-_xf3.root2"); tree = chain; #endif // SINGLE_TREE } Init(tree); } s::~s() { if (!fChain) return; delete fChain->GetCurrentFile(); } Int_t s::GetEntry(Int_t entry) { // Read contents of entry. if (!fChain) return 0; return fChain->GetEntry(entry); } Int_t s::LoadTree(Int_t entry) { // Set the environment to read one entry if (!fChain) return -5; Int_t centry = fChain->LoadTree(entry); if (centry < 0) return centry; if (fChain->IsA() != TChain::Class()) return centry; TChain *chain = (TChain*)fChain; if (chain->GetTreeNumber() != fCurrent) { fCurrent = chain->GetTreeNumber(); Notify(); } return centry; } void s::Init(TTree *tree) { // Set branch addresses if (tree == 0) return; fChain = tree; fCurrent = -1; fChain->SetMakeClass(1); fChain->SetBranchAddress("RN",&RN_run); Notify(); } Bool_t s::Notify() { // called when loading a new file // get branch pointers b_RN = fChain->GetBranch("RN"); return kTRUE; } void s::Show(Int_t entry) { // Print contents of entry. // If entry is not specified, print current entry if (!fChain) return; fChain->Show(entry); } Int_t s::BeamId(Int_t entry) { Int_t sigma; Int_t pro; Int_t pion; sigma = (int(RN_Pidb)%1000)/100; //omega = (int(RN_Pidb)%10)/1; pro = (int(RN_Pidb)%10000)/1000; pion = (int(RN_Pidb)%1000000)/100000; //cout< pion) return 21; // Sigma- Beam if (pion > sigma) return 9; // Pion- Beam else return 14; // proton Beam } Float_t s::smin(Int_t entry, Int_t position) { // smin is the distance from the primary vertex to an extension of a track // participating in a secondary vertex. // example: smin[0] is smin for the track with the largest smin value. // example: smin[1] is smin for the track with the second largest smin value. Float_t s[4], smin[4]; s[0] = sqrt( pow(RN_X0t1 + (RN_Pxt1/RN_Pzt1)*(RN_Zs - RN_L) - RN_Xp,2) + pow(RN_Y0t1 + (RN_Pyt1/RN_Pzt1)*(RN_Zs - RN_L) - RN_Yp,2) ); s[1] = sqrt( pow(RN_X0t2 + (RN_Pxt2/RN_Pzt1)*(RN_Zs - RN_L) - RN_Xp,2) + pow(RN_Y0t2 + (RN_Pyt2/RN_Pzt1)*(RN_Zs - RN_L) - RN_Yp,2) ); s[2] = sqrt( pow(RN_X0t3 + (RN_Pxt3/RN_Pzt1)*(RN_Zs - RN_L) - RN_Xp,2) + pow(RN_Y0t3 + (RN_Pyt3/RN_Pzt1)*(RN_Zs - RN_L) - RN_Yp,2) ); s[3] = sqrt( pow(RN_X0t4 + (RN_Pxt4/RN_Pzt1)*(RN_Zs - RN_L) - RN_Xp,2) + pow(RN_Y0t4 + (RN_Pyt4/RN_Pzt1)*(RN_Zs - RN_L) - RN_Yp,2) ); if (entry==502816) cout<0 && s[j]>smin[i]) { k = j; smin[i] = s[j]; } } if (k >= 0) { s[k] = -s[k]; } } return smin[position]; } Int_t s::Daughter_Is_A_Pion(Int_t entry) { Float_t DaughterPionProb=0.; // V0 Kink Pion Probability Float_t DaughterKaonProb=0.; // V0 Kink Kaon Probability Float_t DaughterProtonProb=0.; // V0 Kink Proton Probability DaughterPionProb = ( int(RN_pidtrk_rv01) % 100 ) ; DaughterKaonProb = ( int(RN_pidtrk_rv01)/100 % 100 ) ; DaughterProtonProb = ( int(RN_pidtrk_rv01)/10000 % 100 ) ; if (DaughterPionProb > DaughterProtonProb && DaughterPionProb > DaughterKaonProb) //if (DaughterPionProb > DaughterKaonProb) { return 1 ; // Daughter IS a Pion } else { return -1; // Daughter is NOT a Pion } } Int_t s::Daughter_Is_A_Kaon(Int_t entry) { /* V0 Kink Kaon Probability*/ Float_t DaughterPionProb=0.; Float_t DaughterKaonProb=0.; Float_t DaughterProtonProb=0.; DaughterPionProb = ( int(RN_pidtrk_rv01) % 100 ) ; //DaughterKaonProb = ( int(RN_pidtrk_rv01)/100 % 100 ) ; //DaughterProtonProb = ( int(RN_pidtrk_rv01)/10000 % 100 ) ; //swap to correct it DaughterKaonProb = ( int(RN_pidtrk_rv01)/100 % 100 ) ; DaughterProtonProb = ( int(RN_pidtrk_rv01)/10000 % 100 ) ; if (DaughterKaonProb >DaughterProtonProb && DaughterKaonProb > DaughterPionProb) //if (DaughterKaonProb > DaughterPionProb) { return 1 ; // Daughter IS a Pion } else { return -1; // Daughter is NOT a Pion } } Int_t s::DaughterKaonProb(Int_t entry) { /* V0 Kink Kaon Probability*/ Float_t DaughterPionProb=0.; Float_t DaughterKaonProb=0.; Float_t DaughterProtonProb=0.; DaughterPionProb = ( int(RN_pidtrk_rv01) % 100 ) ; DaughterKaonProb = ( int(RN_pidtrk_rv01/100) % 100 ) ; DaughterProtonProb = ( int(RN_pidtrk_rv01/10000) % 100 ) ; float sig = ( int(RN_pidtrk_rv01/1000000) % 100 ) ; Float_t ricid= ( int(RN_pidtrk_rv01/100000000) % 10 )-1 ; //cout< 70) //if (DaughterKaonProb !=0) gives the same resulty as above { return 1 ; // Daughter IS a Kaon } else { return -1; // Daughter is NOT a Kaon } } Int_t s::DaughterPionProb(Int_t entry) { /* V0 Kink Pion Probability*/ Float_t DaughterPionProb=0.; Float_t DaughterKaonProb=0.; Float_t DaughterProtonProb=0.; DaughterPionProb = ( int(RN_pidtrk_rv01) % 100 ) ; DaughterKaonProb = ( int(RN_pidtrk_rv01)/100 % 100 ) ; DaughterProtonProb = ( int(RN_pidtrk_rv01)/10000 % 100 ) ; if (DaughterPionProb > 70) //if (DaughterPionProb !=0) gives the same resulty as above { return 1 ; // Daughter IS a Pion } else { return -1; // Daughter is NOT a Pion } } Int_t s::VidPionProb(Int_t entry) { /* V0 Kink Pion Probability vid_rv01*/ double tkpiprob = (int(RN_vid_rv01b)%1000000-int(RN_vid_rv01b)%100000) / 1000000.; double tkkaprob = (int(RN_vid_rv01b)%100000 -int(RN_vid_rv01b)%10000) / 100000.; double tkprprob = (int(RN_vid_rv01b)%10000 -int(RN_vid_rv01b)%1000) / 10000.; if ( tkpiprob> .5) { return 1 ; // Daughter IS a Pion } else { return -1; // Daughter is NOT a Pion } } Int_t s::Vid_Is_APion(Int_t entry) { /* V0 Kink Pion Probability vid_rv01*/ double tkpiprob = (int(RN_vid_rv01b)%1000000-int(RN_vid_rv01b)%100000) / 1000000.; double tkkaprob = (int(RN_vid_rv01b)%100000 -int(RN_vid_rv01b)%10000) / 100000.; double tkprprob = (int(RN_vid_rv01b)%10000 -int(RN_vid_rv01b)%1000) / 10000.; if ( tkpiprob>tkprprob && tkpiprob >tkkaprob ) return 1; else return -1; } Int_t s::VidKaonProb(Int_t entry) { /* V0 Kink Pion Probability vid_rv01*/ double tkpiprob = (int(RN_vid_rv01b)%1000000-int(RN_vid_rv01b)%100000) / 1000000.; double tkkaprob = (int(RN_vid_rv01b)%100000 -int(RN_vid_rv01b)%10000) / 100000.; double tkprprob = (int(RN_vid_rv01b)%10000 -int(RN_vid_rv01b)%1000) / 10000.; if ( tkkaprob> .7) { return 1 ; // Daughter IS a Pion } else { return -1; // Daughter is NOT a Pion } } Int_t s::Vid_Is_AKaon(Int_t entry) { /* V0 Kink Pion Probability vid_rv01*/ double tkpiprob = (int(RN_vid_rv01b)%1000000-int(RN_vid_rv01b)%100000) / 1000000.; double tkkaprob = (int(RN_vid_rv01b)%100000 -int(RN_vid_rv01b)%10000) / 100000.; double tkprprob = (int(RN_vid_rv01b)%10000 -int(RN_vid_rv01b)%1000) / 10000.; if ( tkkaprob>tkprprob && tkkaprob >tkpiprob ) return 1; else return -1; } Double_t s::ProperTime(Int_t entry,Int_t loversigma) { //Double_t c=0.2997992458e-4; // speed of light in cm/fs Double_t c=0.2997992458e-1; // speed of light in cm/ps Double_t p= sqrt(RN_Pxs*RN_Pxs + RN_Pys*RN_Pys + RN_Pzs*RN_Pzs); Double_t tau= ((RN_L-loversigma*RN_S)*RN_mass/p)/c; // reduced proper time // Double_t tau= ((RN_Zs-RN_Zp)*RN_mass/p)/c; return tau; } Int_t s::TgtVol(Int_t entry) { // anal v 2.00 pass2/tgt_pos.ocs and // anal v 1.03 pass1/tgt_sz.ocs // Float_t tgt_center_z[5]={6.0889,-4.6519,-3.1552,-1.6611,-0.0538}; //Float_t tgt_tickness[5]={0.08,0.0572,0.11,0.11,0.11}; Float_t delta_Z=0.25; // cm if ((RN_Zs >= -6.1289 - delta_Z && RN_Zs <= (-6.1289 + 0.0800 + delta_Z)) || (RN_Zs >= -4.6233 - delta_Z && RN_Zs <= (-4.6233 + 0.0572 + delta_Z)) || (RN_Zs >= -3.1002 - delta_Z && RN_Zs <= (-3.1002 + 0.11 + delta_Z )) || (RN_Zs >= -1.6061 - delta_Z && RN_Zs <= (-1.6061 + 0.11 + delta_Z )) || (RN_Zs >= -0.1088 - delta_Z && RN_Zs <= (-0.1088 + 0.11 + delta_Z )) ) { return -1;// cout<<"INSIDE target "<temp2)&&temp2>mom_thres) return 1; if ((temp2>temp1)&&temp1>mom_thres) return 1; else return -1; } Int_t s::MinOfTrk2(Int_t entry, float mom_thres) { Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Float_t temp1 = s::Trk_p(entry,2); // if (temp1>mom_thres && RN_pidt2 != 15 && RN_pidt2 != 24) {OITrk2ID->Fill(RN_pidt2,RN_mvert_t2); return 1; } if (temp1>mom_thres) {OITrk2ID->Fill(RN_pidt2,RN_mvert_t2); return 1; } else return -1; } Int_t s::Cut(Int_t entry) { // This function may be called from Loop. // returns 1 if entry is accepted. // returns -1 otherwise. return 1; } void s::kp(Int_t entry) { Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Int_t no_of_trk = RN_nt;// e mu pi k p sig Xi ome Float_t temp; // 8 7 6 5 4 3 2 1 for (Int_t i=0; i=2.68 && RN_mass<=2.72) { pi_plus_828->Fill(temp); } else sb_pi_plus_828->Fill(temp); } if (mvert[i]==1 && pid[i]==12) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { k_minus_828->Fill(temp); } else sb_k_minus_828->Fill(temp); } if (mvert[i]==1 && pid[i]==23) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { X_minus_828->Fill(temp); } else sb_X_minus_828->Fill(temp); } } if(RN_ID==829) { if (mvert[i]==1 && pid[i]==8) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { pi_plus_829->Fill(temp); } else sb_pi_plus_829->Fill(temp); } if (mvert[i]==1 && pid[i]==9) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { pi_minus_829->Fill(temp); } else sb_pi_minus_829->Fill(temp); } if (mvert[i]==1 && pid[i]==24) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { Ome_minus_829->Fill(temp); } else sb_Ome_minus_829->Fill(temp); } } if(RN_ID==850) { if (mvert[i]==1 && pid[i]==8) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { pi_plus_850->Fill(temp); } else sb_pi_plus_850->Fill(temp); } if (mvert[i]==1 && pid[i]==24) { temp=s::Trk_p(entry,i); if(RN_mass>=2.68 && RN_mass<=2.72) { Ome_minus_850->Fill(temp); } else sb_Ome_minus_850->Fill(temp); } } } } void s::Track_Print(Int_t entry) { Float_t m[9] = {RN_masst1, RN_masst2, RN_masst3, RN_masst4, RN_masst5, RN_masst6, RN_masst7, RN_masst8, RN_masst9} ; Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Int_t no_of_trk = RN_nt; // particle IDs pi+:8 pi-:9 k-:12 p:14 Xi:23 for(Int_t i=0;iFill(m[i]); //if (RN_ID==828 && pid[i]==23 && mvert[i]==1) hcascade->Fill(m[i]); } } Int_t s::Angle_Vector(Int_t entry) { // e mu pi k prot sig Xi ome // 8 7 6 5 4 3 2 1 // particle IDs pi+:8 pi-:9 k-:12 p:14 Xi:23 Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Int_t no_of_trk = RN_nt; Double_t vec_x[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9}; Double_t vec_y[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9}; Double_t vec_z[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9}; Int_t kaon_index=-1; Int_t pion_index=-1; Int_t Xi_index=-1; for(Int_t i=0; i=0 && Xi_index>=0) { TVector3 v1(vec_x[kaon_index], vec_y[kaon_index], vec_z[kaon_index]); //kaon momentum vector TVector3 v2(vec_x[Xi_index], vec_y[Xi_index], vec_z[Xi_index]); // Xi momentum vector Double_t ang = (180./TMath::Pi()) * v1.Angle(v2); if(ang<=0.8) return 1; else return -1; } } Int_t s::Event_Reject(Int_t entry) { Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Int_t no_of_trk = RN_nt; // e mu pi k prot sig Xi ome // 8 7 6 5 4 3 2 1 // particle IDs pi+:8 pi-:9 k-:12 p:14 for(Int_t i=0;iMomentum) return 1; else return -1; /* this part is "old", in fact bugged. i modified it as in above!!! 11/18/02 for(Int_t i=0; i=Momentum) return 1; //momentum threshold else return -1; } */ } void s::Lambda0(Int_t entry) { //Calculate the Lambda0 mass from proton and pi- at mvert=2 Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Float_t mass[9] = {RN_masst1, RN_masst2, RN_masst3, RN_masst4, RN_masst5, RN_masst6, RN_masst7, RN_masst8, RN_masst9} ; Int_t no_of_trk = RN_nt; Double_t p_x[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9}; Double_t p_y[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9}; Double_t p_z[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9}; Double_t mass_proton=0.93827231; Double_t mass_pi_minus=0.1395679; Double_t E_proton; Double_t E_pi_minus; //Energies Double_t P_proton; Double_t P_pi_minus; //Momenta Int_t pro_indx=-1; Int_t pi_minus_indx=-1; //Both are decay products of Lambda_0 from mvert=2 for(Int_t i=0; i calculate kinematics variables P_proton=sqrt(pow(p_x[pro_indx],2)+ pow(p_y[pro_indx],2)+ pow(p_z[pro_indx],2)); E_proton=sqrt(pow(mass[pro_indx],2) + pow(P_proton,2)); P_pi_minus=sqrt(pow(p_x[pi_minus_indx],2)+ pow(p_y[pi_minus_indx],2)+ pow(p_z[pi_minus_indx],2)); E_pi_minus=sqrt(pow(mass[pi_minus_indx],2) + pow(P_pi_minus,2)); Double_t m1=mass_proton; // 1 : proton Double_t m2=mass_pi_minus;// 2 : pion Double_t E1=E_proton; Double_t E2=E_pi_minus; Double_t p1x=p_x[pro_indx]; Double_t p1y=p_y[pro_indx]; Double_t p1z=p_z[pro_indx]; Double_t p2x=p_x[pi_minus_indx]; Double_t p2y=p_y[pi_minus_indx]; Double_t p2z=p_z[pi_minus_indx ]; Double_t M = sqrt (pow(m1+m2,2) + 2*(E1*E2 - m1*m2 - (p1x*p2x + p1y*p2y + p1z*p2z) ) ); hlambda->Fill(M); } } // particle IDs pi+:8 pi-:9 k-:12 p:14 Ome- =24 X-=23 sigma + ==19 , sigma - = 21 Double_t s::Cos_Theta(Int_t entry) { Float_t m[9] = {RN_masst1,RN_masst2,RN_masst3,RN_masst4,RN_masst5,RN_masst6,RN_masst7, RN_masst8,RN_masst9} ; Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Float_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Float_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Float_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9} ; Float_t cos_theta; Int_t no_of_trk = RN_nt; Int_t i,j,k; Float_t e1; Float_t e1_cms; Float_t e2; Float_t e2_cms; Float_t mA; Float_t p1; Float_t p1_cms; Float_t pA; Float_t pA_cms; Float_t eA; Int_t pi[3] ={-1,-1,-1}; Int_t ome[1] ={-1}; Float_t m1,m2; for(Int_t i=0; i=2.685 && RN_mass<=2.715)) hcos_teti->Fill(cos_theta); if(!(RN_mass>=2.685 && RN_mass<=2.715)) hcos_teto->Fill(cos_theta); return cos_theta; } void s::Slice2DHisto(TH2F *hp) { gStyle->SetLabelSize(0.06,"x"); gStyle->SetLabelSize(0.06,"y"); gStyle->SetFrameFillColor(38); gStyle->SetTitleW(0.6); gStyle->SetTitleH(0.1); // Connect the input file and get the 2-d histogram in memory TH2F *hpxpy =(TH2F*)hp->Clone(); hpxpy->SetName("hpxpy"); // Create a canvas and divide it TCanvas *c7 = new TCanvas("c7","c7",700,500); c7->SetFillColor(42); c7->Divide(2,1); c7->cd(1); TPad *left = (TPad*)gPad; left->Divide(1,2); // Draw 2-d original histogram left->cd(1); gPad->SetTopMargin(0.12); gPad->SetFillColor(33); hpxpy->Draw("box"); hpxpy->GetXaxis()->SetLabelSize(0.04); hpxpy->GetYaxis()->SetLabelSize(0.04); hpxpy->SetMarkerColor(kYellow); // Fit slices projected along Y fron bins in X [7,32] TF1 *pullfcn = new TF1("pullfcn","gaus",-10,10); // Create fitting function pullfcn->SetRange(-8.,8.); hpxpy->FitSlicesY(pullfcn,0,15,0); // Show fitted "mean" for each slice left->cd(2); gPad->SetFillColor(33); hpxpy_0->Draw("box"); c7->cd(2); TPad *right = (TPad*)gPad; right->Divide(1,2); right->cd(1); gPad->SetTopMargin(0.12); gPad->SetLeftMargin(0.15); gPad->SetFillColor(33); hpxpy_1->Draw(); // Show fitted "sigma" for each slice right->cd(2); gPad->SetTopMargin(0.12); gPad->SetLeftMargin(0.15); gPad->SetFillColor(33); // hpxpy_2->SetMinimum(0.); hpxpy_2->Draw(); //attributes hpxpy_0->SetLineColor(kYellow); hpxpy_1->SetLineColor(kYellow); hpxpy_2->SetLineColor(kYellow); hpxpy_0->SetMarkerColor(kRed); hpxpy_1->SetMarkerColor(kRed); hpxpy_2->SetMarkerColor(kRed); hpxpy_0->SetMarkerStyle(21); hpxpy_1->SetMarkerStyle(21); hpxpy_2->SetMarkerStyle(21); hpxpy_0->SetMarkerSize(0.6); hpxpy_1->SetMarkerSize(0.6); hpxpy_2->SetMarkerSize(0.6); } void s::Histo_Normalizer() { Double_t norm; norm= hAngle_in->GetEntries(); if(norm) hAngle_in->Scale(1/norm); norm= hAngle_out->GetEntries(); if(norm) hAngle_out->Scale(1/norm); norm= hSumpt2_in->GetEntries(); if(norm) hSumpt2_in->Scale(1/norm); norm= hSumpt2_out->GetEntries(); if(norm) hSumpt2_out->Scale(1/norm); norm= hOIpt_in->GetEntries(); if(norm) hOIpt_in->Scale(1/norm); norm= hOIpt_out->GetEntries(); if(norm) hOIpt_out->Scale(1/norm); } void s::ProperTimePlot() { TCanvas *c2 = new TCanvas("c2","Proper Time distrutions",0,0,600,600); //canvas 2 c2->Divide(2,2); c2->cd(1);h827ProperTime->Draw("e"); c2->cd(2);h828ProperTime->Draw("e"); c2->cd(3);h829ProperTime->Draw("e"); c2->cd(4);h850ProperTime->Draw("e"); } void s::OmeZs2ProTime() { TCanvas *c7 = new TCanvas("c7","#Omega^{-} ",0,0,600,600); //canvas 6 TPostScript *ps4 = new TPostScript("MC_time.ps",111); c7->Clear(); c7->Divide(2,2); //c7->Update();ps4->NewPage(); c7->cd(1);c7_1->SetLogy(1);ht829->Draw(); c7->cd(2);c7_2->SetLogy(1);ht1829->Draw(); c7->cd(3);c7_3->SetLogy(1);ht2829->Draw(); c7->Update();ps4->NewPage(); //c7->cd(1);c7_1->SetLogy(1);ht3829->Draw(); //c7->cd(2);c7_2->SetLogy(1);ht3850->Draw(); //c7->cd(3);c7_3->SetLogy(1);ht4829->Draw(); //c7->cd(4);c7_4->SetLogy(1);ht4850->Draw(); c7->cd(1);c7_1->SetLogy(1);ht22829->Draw(); c7->cd(2);c7_2->SetLogy(1);ht22850->Draw(); c7->cd(3);c7_3->SetLogy(1);ht222829->Draw(); c7->cd(4);c7_4->SetLogy(1);ht222850->Draw(); c7->Update();ps4->NewPage(); ht829->Clone("ht829norm"); ht1829->Clone("ht1829norm"); ht2829->Clone("ht2829norm"); norm=ht829norm->GetEntries();ht829norm->Scale(1/norm); norm=ht1829norm->GetEntries();ht1829norm->Scale(1/norm); norm=ht2829norm->GetEntries();ht2829norm->Scale(1/norm); c7->cd(1);c7_1->SetLogy(1);ht829norm->Draw(); c7->cd(2);c7_2->SetLogy(1);ht1829norm->Draw(); c7->cd(3);c7_3->SetLogy(1);ht2829norm->Draw(); c7->Update();ps4->NewPage(); TF1 *fun1 = new TF1("fun1","exp(-x/.82)",0,5.); // Oiii MC TH1F *hfun1 =new TH1F("hfun1", "Ome- production propertime",25,0,5.0); TH1F *hfun2 =new TH1F("hfun2", "Ome- production propertime",25,0,5.0); TH1F *correctionfun1 =new TH1F("correctionfun1", "exp/Ome- all",25,0,5.); TH1F *correctionfun2 =new TH1F("correctionfun2", "exp/ome- 100Sumw2();correctionfun2->Sumw2(); //hfun1->Eval(fun1);hfun1->Scale(1/ht1829->GetEntries()); //hfun2->Eval(fun1);hfun2->Scale(1/ht2829->GetEntries()); hfun1->FillRandom("fun1",1000000); // hfun2->FillRandom("fun1",1000000); // create a perfect exponential hfun1->Scale(ht1829->GetEntries()/1000000);// scale with number of entry hfun2->Scale(ht2829->GetEntries()/1000000); correctionfun1->Divide(hfun1,ht1829,1,1); correctionfun2->Divide(hfun2,ht2829,1,1); c7->cd(1);correctionfun1->Draw("e"); c7->cd(2);correctionfun2->Draw("e"); c7->Update();ps4->NewPage(); hfun1->FillRandom("fun1",1000000); // hfun2->FillRandom("fun1",1000000); // create a perfect exponential TH1F *correctionfun3 =new TH1F("correctionfun3", "829 exp/Ome- signalband",25,0,5.); TH1F *correctionfun4 =new TH1F("correctionfun4", "850 exp/ome- signalband ",25,0,5.); hfun1->Scale(ht829sbs->GetEntries()/1000000);// scale with number of entry hfun2->Scale(ht850sbs->GetEntries()/1000000); norm1=ht829gen->GetEntries(); norm2=ht22829->GetEntries(); ht829gen->Scale(norm2/norm1); norm1=ht850gen->GetEntries(); norm2=ht22850->GetEntries(); ht850gen->Scale(norm2/norm1); correctionfun3->Divide(ht829gen,ht22829,1,1); correctionfun4->Divide(ht850gen,ht22850,1,1); c7->cd(1);correctionfun3->Draw("e"); c7->cd(2); correctionfun4->Draw("e"); ps4->Close(); } Int_t s::pid829(Int_t entry) { Int_t no_of_trk = RN_nt; Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Int_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Double_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Double_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Double_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9} ; Int_t kaon_minus= -1; Int_t pion_minus= -1;Int_t pion_plus[2]= {-1,-1}; Int_t Ome_minus = -1; Int_t j=0; Int_t pion[3]={-1,-1,-1}; // particle IDs pi+:8 pi-:9 k-:12 p:14 Ome_minus=24 X_minus=23 for(Int_t i=0; i12. && pion2_mom>12. && pion3_mom>12.) return 1; if(pion1_mom>8. && pion2_mom>8. && pion3_mom>8.) return 1; else return -1; /* Int_t n=3; // Bubble sort the momentum in ascending order Double_t a[] = {pion1_mom,pion2_mom,pion3_mom}; for(i=0; i8. && a[1]>12. && a[2]>15.) return 1; else return -1; */ } Int_t s::pid850(Int_t entry) { Int_t no_of_trk = RN_nt; Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Int_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Double_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Double_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Double_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9} ; Int_t kaon_minus= -1; Int_t pion_minus= -1; Int_t pion_plus= -1; Int_t Ome_minus = -1; Int_t j=0; Int_t pion[3]={-1,-1,-1}; Int_t flag=-1; // particle IDs pi+:8 pi-:9 k-:12 p:14 Ome_minus=24 X_minus=23 for(Int_t i=0; i12.) return 1; else return -1; } Int_t s::pid828(Int_t entry) { Int_t no_of_trk = RN_nt; Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Int_t pid1[9] = {RN_pid1t1, RN_pid1t2, RN_pid1t3, RN_pid1t4, RN_pid1t5, RN_pid1t6, RN_pid1t7, RN_pid1t8, RN_pid1t9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Double_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Double_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Double_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9} ; Int_t kaon_minus= -1; Int_t pion_minus= -1; Int_t pion_plus= -1; Int_t Ome_minus = -1; Int_t j=0; Int_t pion[3]={-1,-1,-1}; Int_t flag=-1; // particle IDs pi+:8 pi-:9 k-:12 p:14 Ome_minus=24 X_minus=23 for(Int_t i=0; i8.&& pimom2>8.) return 1; else return -1; } Double_t s::Oi_p_asym(Int_t entry){ Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; // particle IDs pi+:8 pi-:9 k-:12 p:14 Ome_minus=24 X_minus=23 Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Int_t pion=-1;Int_t ome=-1; for(Int_t i=0; i5 && int((int(pid1[kaon[1]])%100000) / 10000)>5) return 1; else return -1; } Double_t s::oiiipt(Int_t entry) {//829 Float_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Float_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Float_t m[9] = {RN_masst1,RN_masst2,RN_masst3,RN_masst4,RN_masst5,RN_masst6,RN_masst7,RN_masst8,RN_masst9} ; Float_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Float_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Float_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt9,RN_Pzt9} ; Int_t pi[3] = {-1,-1,-1}; Int_t pi_mi[3] = {-1,-1,-1}; Int_t ome_minus = -1; Int_t j=0,k=0; for(Int_t i=0; i*q) { temp=*p; *p=*q; *q=temp; } } void s::Bubble(Double_t *a,int n) {//Bubble sorting of float array A[] int i,j; for (i=0; i0) rmass = masses[md-1]; // get mass , ome-=24, but it is index starts from 0 !!! // so masses[md-1] c[0][itrk] = tt[2][itrk]/tt[4][itrk]; // track measurements c[1][itrk] = tt[3][itrk]/tt[4][itrk]; c[2][itrk] = 1./sqrt( pow(tt[2][itrk],2) + pow(tt[3][itrk],2) + pow(tt[4][itrk],2)); for(int ii=0;ii<20;ii++){sig[1][1][ii]=0;} // initia;ize sig[1][1][itrk] itgt = TMath::Max(1,TMath::Min(6,int((RN_Zp+7.5)/1.5))); sig[0][0][itrk] =pow((stx_par[0][itgt] + stx_par[1][itgt]*c[2][itrk] + stx_par[2][itgt]*pow(c[2][itrk],2)),2) ; sig[0][1][itrk] = 0.0; sig[1][1][itrk] = sig[0][0][itrk] ; j = 0; if (c[2][itrk] < 1./15.) j=1; sig[0][2][itrk] = 0.0; sig[1][2][itrk] = 0.0; //curvature errors sig[2][2][itrk] = pow(sp_par[0][j],2) * (1.0+ pow((sp_par[1][j]*c[2][itrk]),2)) ; sig[1][0][itrk] = sig[0][1][itrk] ; // ! diagonalize matrix sig[2][0][itrk] = sig[0][2][itrk] ; sig[2][1][itrk] = sig[1][2][itrk] ; c[3][itrk] = sqrt( pow(rmass,2) + pow(tt[2][itrk],2) + pow(tt[3][itrk],2) + pow(tt[4][itrk],2)); //! E c[4][itrk] = tt[2][itrk] ; // Px c[5][itrk] = tt[3][itrk] ; // Py c[6][itrk] = tt[4][itrk] ; // Pz c[7][itrk] = rmass ; // mass for(int n=0; n<4;n++) { // 4-vector components p[n] = p[n] + c[3+n][itrk]; // sum 4 vector } // 4-vector components // recon_mass.F version //p[3] = abs(1./sqrt(1+ pow(c[0][itrk],2))/c[2][itrk]); // z momentum component //p[2] = p[3]*c[1][itrk]; // y momentum component //p[1] = p[3]*c[0][itrk] ; // x momentum component //p[0] = sqrt(pow(rmass,2)+pow(p[1],2)+pow(p[2],2)+pow(p[3],2)); // energy } // which is in vtx } // each track Double_t rmass = sqrt(TMath::Max(0., pow(p[0],2) - pow(p[1],2) -pow(p[2],2) - pow(p[3],2))) ; t = 0.; // sum variable for(itrk=0;itrk0.05) cout<> n) { // cout << "decimal: " << n << endl; // print binary with leading zeros cout << "binary : "; for (int i=31; i>=0; i--) { int bit = ((n >> i) & 1); cout << bit; } cout << endl; // }//end loop } //void void s::GenerateEmbedFile(Int_t entry) { Int_t mvert[9] = {RN_mvert_t1, RN_mvert_t2, RN_mvert_t3, RN_mvert_t4, RN_mvert_t5, RN_mvert_t6, RN_mvert_t7, RN_mvert_t8, RN_mvert_t9} ; Double_t px[9] = {RN_Pxt1,RN_Pxt2,RN_Pxt3,RN_Pxt4,RN_Pxt5,RN_Pxt6,RN_Pxt7,RN_Pxt8,RN_Pxt9} ; Double_t py[9] = {RN_Pyt1,RN_Pyt2,RN_Pyt3,RN_Pyt4,RN_Pyt5,RN_Pyt6,RN_Pyt7,RN_Pyt8,RN_Pyt9} ; Double_t pz[9] = {RN_Pzt1,RN_Pzt2,RN_Pzt3,RN_Pzt4,RN_Pzt5,RN_Pzt6,RN_Pzt7,RN_Pzt8,RN_Pzt9} ; Double_t m[9] = {RN_masst1,RN_masst2,RN_masst3,RN_masst4,RN_masst5,RN_masst6,RN_masst7, RN_masst8,RN_masst9} ; Double_t pid[9] = {RN_pidt1, RN_pidt2, RN_pidt3, RN_pidt4, RN_pidt5, RN_pidt6, RN_pidt7, RN_pidt8, RN_pidt9} ; Double_t x[9] = {RN_X0t1,RN_X0t2,RN_X0t3,RN_X0t4,RN_X0t5,RN_X0t6,RN_X0t7,RN_X0t8,RN_X0t9} ; Double_t y[9] = {RN_Y0t1,RN_Y0t2,RN_Y0t3,RN_Y0t4,RN_Y0t5,RN_Y0t6,RN_Y0t7,RN_Y0t8,RN_Y0t9} ; Int_t pi_pl[3]={-1,-1,-1}; Int_t pi_mi[3]={-1,-1,-1}; Int_t ka=-1;Int_t ome=-1; Int_t j=0; Int_t k=0; for(Int_t i=0; i