00001
00002
00003
00004 proLcpTree( int cut=0, TString run="R3010006", int maxEve=10000,
00005 TString wrkDir="/star/data04/sim/balewski/LcpRun2/maxEta1.0/",
00006 TString outPath="fixMe/"
00007 ){
00008 printf("#cut %d -->%s \n",cut,outPath.Data(),run.Data());
00009
00010 gStyle->SetPalette(1,0);
00011 gStyle->SetOptStat(1111111);
00012
00013 printf("#run %s\n",run.Data());
00014
00015
00016 TChain *chain = new TChain("T-LCP","dummName");
00017
00018 TString item=wrkDir+"/tree/"+run;
00019 item=item+".tree.root";
00020 printf("#tree %s\n", item.Data());
00021 int ret=chain->AddFile(item,-1);
00022 printf("chain ret %d \n",ret);
00023
00024
00025
00026 const float Pi=3.1416;
00027 TString outF=wrkDir+outPath+run+".hist.root";
00028
00029 hFile=new TFile(outF,"RECREATE");
00030 assert(hFile->IsOpen());
00031
00032 int i;
00033 TH1F *h1[8];
00034 TH2F *h2L[100]; int nh2L=0;
00035
00036
00037 h1[0]=new TH1F("bx","rates vs. bXing",129,-0.5,128.5);
00038 h1[1]=new TH1F("pt","Leading Particle pT (GeV/c)",100,0.,10.);
00039
00040 h1[2]=new TH1F("Zv","Z vertex/cm",100,-250.,250.);
00041 h1[3]=new TH1F("nPrim","No.of valid prim TPC tracks ",50,-0.5,49.5);
00042 h1[4]=new TH1F("cosm", "Mike's Cosmics Rejector return value",5,-0.5,4.5);
00043 h1[5]=new TH1F("phi","LCP phi/rad",100,-3.15.,3.15);
00044 h1[6]=new TH1F("eta","LCP Eta",100,2.,2.);
00045 h1[7]=new TH1F("q","LCP charge",10,-2.,2.);
00046 float bxF=-0.5, bxL=119.5;
00047 int nbx=120;
00048 int nphi=16;
00049 TH2F *h2= new TH2F("PhiBxAll","LCP Phi/rad vs. bXing[0-119]",nbx,bxF,bxL,nphi,-Pi,Pi);
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 const int mxPt=6;
00060 TH2F *h2pT[mxPt];
00061 for(i=0;i<mxPt;i++) {
00062 char tit1[100], tit2[1000];
00063 sprintf(tit1,"PhiBxPt%d",i+1);
00064 sprintf(tit2,"LCP Phi/rad vs. bXing[0-119], cut=Pt%d",i+1);
00065 h2pT[i]= new TH2F(tit1,tit2,nbx,bxF,bxL,nphi,-Pi,Pi);
00066 h2L[nh2L++]=h2pT[i];
00067
00068 }
00069
00070
00071 const int mxRt=3;
00072 TH2F *h2rT[mxRt];
00073 char coreRt[mxRt]={'L','M','H'};
00074 for(i=0;i<mxRt;i++) {
00075 char tit1[100], tit2[1000];
00076 sprintf(tit1,"PhiBxPt%c",coreRt[i]);
00077 sprintf(tit2,"LCP Phi/rad vs. bXing[0-119], cut=Pt%c",coreRt[i]);
00078 h2rT[i]= new TH2F(tit1,tit2,nbx,bxF,bxL,nphi,-Pi,Pi);
00079 h2L[nh2L++]=h2rT[i];
00080 }
00081
00082
00083 const int mxEta=4;
00084 TH2F *h2eta[mxEta];
00085 char *coreEta[mxEta]={"BB","Bc","Fc","FF"};
00086 for(i=0;i<mxEta;i++) {
00087 char tit1[100], tit2[1000];
00088 sprintf(tit1,"PhiBxEta%s",coreEta[i]);
00089 sprintf(tit2,"LCP Phi/rad vs. bXing[0-119], cut=Eta%s",coreEta[i]);
00090 h2eta[i]= new TH2F(tit1,tit2,nbx,bxF,bxL,nphi,-Pi,Pi);
00091 h2L[nh2L++]=h2eta[i];
00092 }
00093
00094
00095 const int mxq=2;
00096 TH2F *h2q[mxq];
00097 char *coreq[mxq]={"neg","pos"};
00098 for(i=0;i<mxq;i++) {
00099 char tit1[100], tit2[1000];
00100 sprintf(tit1,"PhiBxQ%s",coreq[i]);
00101 sprintf(tit2,"LCP Phi/rad vs. bXing[0-119], cut=Q%s",coreq[i]);
00102 h2q[i]= new TH2F(tit1,tit2,nbx,bxF,bxL,nphi,-Pi,Pi);
00103 h2L[nh2L++]=h2q[i];
00104 }
00105
00106
00107
00108
00109 int N=chain->GetEntries();
00110 if(maxEve<=0) maxEve=N;
00111
00112 printf("#sort %d of %d\n",maxEve,N);
00113
00114
00115
00116 float vz,pt,phi,eta;
00117 int nPrim,bx,cosm,id,nFit,charge;
00118 chain->SetBranchAddress("bx120",&bx);
00119 chain->SetBranchAddress("vz",&vz);
00120 chain->SetBranchAddress("id",&id);
00121 chain->SetBranchAddress("pt",&pt);
00122 chain->SetBranchAddress("phi",&phi);
00123 chain->SetBranchAddress("eta",&eta);
00124 chain->SetBranchAddress("q",&charge);
00125 chain->SetBranchAddress("nPrim",&nPrim);
00126 chain->SetBranchAddress("nFit",&nFit);
00127 chain->SetBranchAddress("cosm",&cosm);
00128
00129 system("date");
00130 printf("\n::::::::::::::: L O O P O V E R E V E N T S :::::\n");
00131 int k;
00132 int nLcp=0;
00133 for(k=0;k<N;k++) {
00134 if(k>=maxEve) break;
00135 int ret=chain->GetEntry(k);
00136 assert(ret);
00137 if(k%1000==0)printf("%d %d %d %f id=%d nFit=%d\n",k,ret,nPrim ,vz,id,nFit);
00138
00139 if(nPrim<3 ) continue;
00140 if( pt>5. ) continue;
00141
00142 if(cut==1 && (nPrim<5 || nPrim>20) ) continue;
00143 if(cut==2 && fabs(vz) >50) continue;
00144 if(cut==3 && (pt<1. || pt>3.) ) continue;
00145 if(cut==4 && charge<0. ) continue;
00146
00147 h1[3]->Fill(nPrim);
00148 h1[0]->Fill(bx);
00149 h1[2]->Fill(vz);
00150 h1[4]->Fill(cosm);
00151 if(nFit<=0) continue;
00152 nLcp++;
00153 h1[1]->Fill(pt);
00154 h1[5]->Fill(phi);
00155 h1[6]->Fill(eta);
00156 h1[7]->Fill(charge);
00157 h2->Fill(bx,phi);
00158
00159
00160
00161 int i=(int)pt;
00162 if(i>=0 && i<mxPt) h2pT[i]->Fill(bx,phi);
00163 i=-1;
00164 if(pt<0.7) i=0;
00165 else if(pt<1.0) i=1;
00166 else if(pt<3.0) i=2;
00167 if(i>=0) h2rT[i]->Fill(bx,phi);
00168
00169
00170 if(eta<-0.5) i=0;
00171 else if(eta<0.) i=1;
00172 else if(eta<0.5) i=2;
00173 else i=3;
00174 h2eta[i]->Fill(bx,phi);
00175
00176
00177 i=0;
00178 if(charge>0) i=1;
00179 h2q[i]->Fill(bx,phi);
00180
00181 }
00182 system("date");
00183 printf("nLcp=%d\n",nLcp);
00184
00185 hFile->Write();
00186
00187
00188
00189 TAxis *X=h2->GetXaxis();
00190 TAxis *Y=h2->GetYaxis();
00191 int nx=X->GetNbins();
00192 int ny=Y->GetNbins();
00193 printf("#title %s\n", h2->GetTitle());
00194 printf("#X-axis %f, %f %d %s \n", X->GetXmin(), X->GetXmax(),nx);
00195 printf("#Y-axis %f, %f %d %s \n", Y->GetXmin(), Y->GetXmax(),ny);
00196 printf("#Integral(valid)= %.1f \n",h2->Integral());
00197
00198 for(i=0;i<nh2L;i++) {
00199 TH2F *hx= h2L[i];
00200 printf("#Integral(%s)= %.1f \n",hx->GetName(),hx->Integral());
00201 }
00202
00203 c=new TCanvas();
00204 c->Divide(2,3);
00205 c->cd(1); h1[1]->Draw(); gPad->SetLogy();
00206 c->cd(2); h1[5]->Draw();
00207 c->cd(3); h1[6]->Draw();
00208 c->cd(4); h2->Draw("colz");
00209 c->cd(5); h1[2]->Draw();
00210 c->cd(6); h1[7]->Draw();
00211
00212 TString outPS=outF.ReplaceAll("hist.root","pro.ps");
00213
00214 c->Print(outPS);
00215
00216
00217 }