+++ /dev/null
-
-
-void ExtractSpectra() {
-
-
- //macro to extract and plot 1d and 2d histograms
- //for efficiency and efficiency corrected spectra
-
- gROOT->SetStyle("Plain");
- gStyle->SetPalette(1);
-
-
- TFile *f = TFile::Open("rootfile");
- // rootfile has to be generated by the AlidNdPtAnalysisPbPb class
-
-
- AlidNdPtAnalysisPbPb *obj =(AlidNdPtAnalysisPbPb*)dNdPtPbPb->FindObject("dNdPtAnalysisPbPb");
- //dNdPtPbPb is container
-
- ////////////////
- // still to do : calculate errors properly
- ////////////////
-
-
-////////////////////////////////////
-// Event level
-////////////////////////////////////
-
- //The projections are 0->z Vertex ; 1->Multiplicity
-
- THnSparse *fSparseEventsRec = obj->GetRecEventMatrix(); //all reconstructed events
- THnSparse *fSparseEventsTrigger = obj->GetTriggerEventMatrix(); //all triggered events
- THnSparse *fSparseGenEvents = obj->GetGenEventMatrix(); //all triggered events
-
- TH2D * fHist2EventTriggerEff = (TH2D*) fSparseEventsTrigger->Projection(0,1)->Clone();
- fHist2EventTriggerEff->Divide(obj->GetGenEventMatrix()->Projection(0,1));
-
- TH2D * fHist2Event = (TH2D*) fSparseEventsRec->Projection(0,1)->Clone();
- fHist2Event->Divide(fHist2EventTriggerEff);
-
- Double_t NumberOfEvents = (Double_t) fHist2Event->Integral();
-
-// printf("========================\n");
-// printf("Number of events is %lf \n",NumberOfEvents);
-// printf("========================\n");
-
-////////////////////////////////////
-// Track level
-////////////////////////////////////
-
- /////////////
- // 1. extract primaries
- // 2. extract efficiency for trigger, vertex and tracking (1d and 2d)
- // 3. correct for efficiency
- /////////////
-
- THnSparse *fSparseTrackRecPrim = obj->GetRecTrackMatrix();//all reconstructed track
- fSparseTrackRecPrim->Add(obj->GetRecSecTrackMatrix(),-1);//primary tracks
-
- THnSparse *fSparseGenPrimTrack = obj->GetGenPrimTrackMatrix();//generated primary tracks
- THnSparse *fSparseGenSecTrack = obj->GetRecSecTrackMatrix();//secondary tracks
-
- THnSparse *fSparseTriggerTrackEvent = obj->GetTriggerTrackEventMatrix();//Tracks from triggered events
- THnSparse *fSparseVtxTrackEvent = obj->GetRecTrackEventMatrix();//Tracks from events with rec. vtx
- THnSparse *fSparseGenTrackEvent = obj->GetGenTrackEventMatrix();//generated TrackEvent matrix
-
- //////////////
- // efficiencies and normalization for 1d
- //////////////
-
- //The projections are 0->z Vertex ; 1->pT ; 2->Eta
-
- //tracking
- TH1D * fHistTrackEffzV = (TH1D*) fSparseTrackRecPrim->Projection(0)->Clone();
- fHistTrackEffzV->Divide(fHistTrackEffzV,fSparseGenPrimTrack->Projection(0),1,1,"B");
- fHistTrackEffzV->Divide(fSparseGenPrimTrack->Projection(0));
- TH1D * fHistTrackEffPt = (TH1D*) fSparseTrackRecPrim->Projection(1)->Clone();
- fHistTrackEffPt->Divide(fHistTrackEffPt,fSparseGenPrimTrack->Projection(1) , 1 ,1 , "B");
- TH1D * fHistTrackEffEta = (TH1D*) fSparseTrackRecPrim->Projection(2)->Clone();
- fHistTrackEffEta->Divide(fHistTrackEffEta,fSparseGenPrimTrack->Projection(2),1,1,"B");
-
- //trigger
- TH1D * fHistTriggerEffzV = (TH1D*) fSparseTriggerTrackEvent->Projection(0)->Clone();
- fHistTriggerEffzV->Divide(fHistTriggerEffzV,fSparseGenTrackEvent->Projection(0),1,1,"B");
- TH1D * fHistTriggerEffPt = (TH1D*) fSparseTriggerTrackEvent->Projection(1)->Clone();
- fHistTriggerEffPt->Divide(fHistTriggerEffPt,fSparseGenTrackEvent->Projection(1),1,1,"B");
- TH1D * fHistTriggerEffEta = (TH1D*) fSparseTriggerTrackEvent->Projection(2)->Clone();
- fHistTriggerEffEta->Divide(fHistTriggerEffEta,fSparseGenTrackEvent->Projection(2),1,1,"B");
-
-
- //rec Vertex
- TH1D * fHistVtxEffzV = (TH1D*) fSparseVtxTrackEvent->Projection(0)->Clone();
- fHistVtxEffzV->Divide(fHistVtxEffzV,fSparseGenTrackEvent->Projection(0),1,1,"B");
- TH1D * fHistVtxEffPt = (TH1D*) fSparseVtxTrackEvent->Projection(1)->Clone();
- fHistVtxEffPt->Divide(fHistVtxEffPt,fSparseGenTrackEvent->Projection(1),1,1,"B");
- TH1D * fHistVtxEffEta = (TH1D*) fSparseVtxTrackEvent->Projection(2)->Clone();
- fHistVtxEffEta->Divide(fHistVtxEffEta,fSparseGenTrackEvent->Projection(2),1,1,"B");
-
- TH1D *fHistTrackzV = (TH1D*)fSparseTrackRecPrim->Projection(0)->Clone();
- fHistTrackzV->Divide(fHistTrackEffzV);
- fHistTrackzV->Divide(fHistTriggerEffzV);
- fHistTrackzV->Divide(fHistVtxEffzV);
- fHistTrackzV->Scale(1./NumberOfEvents);
- fHistTrackzV->Scale(1,"width");
-
-
- TH1D *fHistTrackPt = (TH1D*)fSparseTrackRecPrim->Projection(1)->Clone();
- fHistTrackPt->Divide(fHistTrackEffPt);
- fHistTrackPt->Divide(fHistTriggerEffPt);
- fHistTrackPt->Divide(fHistVtxEffPt);
- fHistTrackPt->Scale(1./NumberOfEvents);
- fHistTrackPt->Scale(1,"width");
-
-
- TH1D *fHistTrackEta = (TH1D*)fSparseTrackRecPrim->Projection(2)->Clone();
- fHistTrackEta->Divide(fHistTrackEffEta);
- fHistTrackEta->Divide(fHistTriggerEffEta);
- fHistTrackEta->Divide(fHistVtxEffEta);
- fHistTrackEta->Scale(1./NumberOfEvents);
- fHistTrackEta->Scale(1,"width");
-
- //////////////
- // 2 dim efficiencies
- //////////////
-
- //The projections are 0->z Vertex ; 1->pT ; 2->Eta
-
- //tracking
- TH2D * fHist2TrackEffzV_Pt = (TH2D*) fSparseTrackRecPrim->Projection(0,1)->Clone();
- fHist2TrackEffzV_Pt->Divide(fSparseGenPrimTrack->Projection(0,1));
- TH2D * fHist2TrackEffzV_Eta = (TH2D*) fSparseTrackRecPrim->Projection(0,2)->Clone();
- fHist2TrackEffzV_Eta->Divide(fSparseGenPrimTrack->Projection(0,2));
- TH2D * fHist2TrackEffPt_Eta = (TH2D*) fSparseTrackRecPrim->Projection(1,2)->Clone();
- fHist2TrackEffPt_Eta->Divide(fSparseGenPrimTrack->Projection(1,2));
-
- //trigger
- TH2D * fHist2TriggerEffzV_Pt = (TH2D*) fSparseTriggerTrackEvent->Projection(0,1)->Clone();
- fHist2TriggerEffzV_Pt->Divide(fSparseGenTrackEvent->Projection(0,1));
- TH2D * fHist2TriggerEffzV_Eta = (TH2D*) fSparseTriggerTrackEvent->Projection(0,2)->Clone();
- fHist2TriggerEffzV_Eta->Divide(fSparseGenTrackEvent->Projection(0,2));
- TH2D * fHist2TriggerEffPt_Eta = (TH2D*) fSparseTriggerTrackEvent->Projection(1,2)->Clone();
- fHist2TriggerEffPt_Eta->Divide(fSparseGenTrackEvent->Projection(1,2));
-
- //rec Vertex
- TH2D * fHist2VtxEffzV_Pt = (TH2D*) fSparseVtxTrackEvent->Projection(0,1)->Clone();
- fHist2VtxEffzV_Pt->Divide(fSparseGenTrackEvent->Projection(0,1));
- TH2D * fHist2VtxEffzV_Eta = (TH2D*) fSparseVtxTrackEvent->Projection(0,2)->Clone();
- fHist2VtxEffzV_Eta->Divide(fSparseGenTrackEvent->Projection(0,2));
- TH2D * fHist2VtxEffPt_Eta = (TH2D*) fSparseVtxTrackEvent->Projection(1,2)->Clone();
- fHist2VtxEffPt_Eta->Divide(fSparseGenTrackEvent->Projection(1,2));
-
- //////////////
- // correct for efficiencies (2d)
- //////////////
-
- TH2D *fHist2TrackzV_Pt = (TH2D*)fSparseTrackRecPrim->Projection(0,1)->Clone();
- fHist2TrackzV_Pt->Divide(fHist2TrackEffzV_Pt);
- fHist2TrackzV_Pt->Divide(fHist2TriggerEffzV_Pt);
- fHist2TrackzV_Pt->Divide(fHist2VtxEffzV_Pt);
-
- TH2D *fHist2TrackPt_Eta = (TH2D*)fSparseTrackRecPrim->Projection(1,2)->Clone();
- fHist2TrackPt_Eta->Divide(fHist2TrackEffPt_Eta);
- fHist2TrackPt_Eta->Divide(fHist2TriggerEffPt_Eta);
- fHist2TrackPt_Eta->Divide(fHist2VtxEffPt_Eta);
-
- TH2D *fHist2TrackzV_Eta = (TH2D*)fSparseTrackRecPrim->Projection(0,2)->Clone();
- fHist2TrackzV_Eta->Divide(fHist2TrackEffzV_Eta);
- fHist2TrackzV_Eta->Divide(fHist2TriggerEffzV_Eta);
- fHist2TrackzV_Eta->Divide(fHist2VtxEffzV_Eta);
-
-/*
-
- //for example
- TCanvas *cPtEta = new TCanvas("cPtEta","cPtEta",900,700);
- fHist2TrackEffPt_Eta->SetStats(0);
- fHist2TrackEffPt_Eta->Draw("col");
-
-*/
-
-
-}
-
-
-
-
-
-