]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
move histogram initialization from MC case only to any analysis usage
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Oct 2010 08:50:04 +0000 (08:50 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Oct 2010 08:50:04 +0000 (08:50 +0000)
PWG4/PartCorrDep/AliAnaBtag.cxx

index 2a721db8fa615f444fd3caf8bd3bdfaa5845f71f..398a2eef6d4cbacec584a0c27940856cd84e81a1 100644 (file)
@@ -98,7 +98,15 @@ TList *  AliAnaBtag::GetCreateOutputObjects()
   fhTPCElectrons = new TH1F("fhTPCElectrons","",400,0,400);\r
   outputContainer->Add(fhTPCElectrons);\r
   \r
+  fhNVTX = new TH1F("fhNVTX","",20,0,20);\r
+  outputContainer->Add(fhNVTX);\r
 \r
+  fhDVM1 = new TH1F("fhDVM1","",400,0,400);\r
+  outputContainer->Add(fhDVM1);\r
+  \r
+  fhDVM2 = new TH1F("fhDVM2","",400,0,400);\r
+  outputContainer->Add(fhDVM2);\r
+  \r
   if(IsDataMC()){\r
     fhEmcalMCE = new TH1F("fhEmcalMCE","",400,0,400);\r
     outputContainer->Add(fhEmcalMCE);\r
@@ -139,15 +147,6 @@ TList *  AliAnaBtag::GetCreateOutputObjects()
     fhSpecies  = new TH1F("fhSpecies","",1000,0,1000);\r
     outputContainer->Add(fhSpecies);\r
     \r
-    fhDVM1 = new TH1F("fhDVM1","",400,0,400);\r
-    outputContainer->Add(fhDVM1);\r
-    \r
-    fhDVM2 = new TH1F("fhDVM2","",400,0,400);\r
-    outputContainer->Add(fhDVM2);\r
-    \r
-    fhNVTX = new TH1F("fhNVTX","",20,0,20);\r
-    outputContainer->Add(fhNVTX);\r
-    \r
     fhNVTXMC = new TH1F("fhNVTXMC","",20,0,20);\r
     outputContainer->Add(fhNVTXMC);\r
   }\r
@@ -232,7 +231,7 @@ void  AliAnaBtag::MakeAnalysisFillAOD()
   fNElecEv=0;\r
   if(fWriteNtuple)\r
     events->Fill(fEventNumber);\r
-\r
+  \r
   //This reads in tracks, extrapolates to EMCAL, does p/E selectrons, identifies electron candidates\r
   //After candidates are obtained, btagging and saving into AOD.\r
   AliStack *stack =0x0;\r
@@ -245,10 +244,10 @@ void  AliAnaBtag::MakeAnalysisFillAOD()
   Int_t ntracks = GetAODCTS()->GetEntriesFast();\r
   if(GetDebug() > 0)\r
     printf("AliAnaBtag::MakeAnalysisFillAOD() - In CTS aod entries %d\n", ntracks);\r
-\r
+  \r
   Int_t iCluster = -999;\r
   Int_t ntot = cl->GetEntriesFast();\r
-\r
+  \r
   //CLUSTER STUFF \r
   for(Int_t iclus = 0; iclus < ntot; iclus++) {\r
     AliVCluster * clus = (AliVCluster*) (cl->At(iclus));\r
@@ -257,28 +256,28 @@ void  AliAnaBtag::MakeAnalysisFillAOD()
     Float_t xclus[3];\r
     clus->GetPosition(xclus);\r
     TVector3 cluspos(xclus[0],xclus[1],xclus[2]);\r
-\r
+    \r
     fhClusterMap->Fill(cluspos.Eta(),cluspos.Phi());\r
   }\r
   \r
   \r
-\r
+  \r
   for (Int_t itrk =  0; itrk <  ntracks; itrk++) {////////////// track loop\r
     iCluster = -999; //start with no match\r
     AliAODTrack * track = (AliAODTrack*) (GetAODCTS()->At(itrk)) ;\r
     if(track->GetLabel()<0){\r
       if(GetDebug()>0)\r
-       printf("Negative track label, aborting!\n");\r
+        printf("Negative track label, aborting!\n");\r
       continue;\r
     }\r
     Double_t imp[2] = {-999.,-999.}; Double_t cov[3] = {-999.,-999.,-999.};\r
     Bool_t dcaOkay = GetDCA(track,imp,cov);  //homegrown dca calculation until AOD is fixed\r
     if(!dcaOkay&&GetDebug()>0) printf("AliAnaBtag::FillAOD - Problem computing DCA to primary vertex for track %d.  Skipping it...\n",itrk);\r
     fhTracks->Fill(track->Pt(),1);\r
-\r
+    \r
     if(track->Pt()<0)\r
       continue;\r
-\r
+    \r
     AliAODPid* pid = (AliAODPid*) track->GetDetPid();\r
     if(pid == 0) {\r
       if(GetDebug() > 0) printf("AliAnaBtag::MakeAnalysisFillAOD() - No PID object - skipping track %d",itrk);\r
@@ -295,41 +294,41 @@ void  AliAnaBtag::MakeAnalysisFillAOD()
       Double_t tphi = pos.Phi();\r
       Double_t teta = pos.Eta();\r
       Double_t tmom = mom.Mag();\r
-\r
+      \r
       Bool_t in = kFALSE;\r
       if(track->Phi()*180./TMath::Pi() > 80. && track->Phi()*180./TMath::Pi() < 190. &&\r
-        track->Eta() > -0.7 && track->Eta() < 0.7) in = kTRUE;\r
-\r
-\r
+         track->Eta() > -0.7 && track->Eta() < 0.7) in = kTRUE;\r
+      \r
+      \r
       Double_t dEdx = pid->GetTPCsignal();\r
       Int_t pidProb = track->GetMostProbablePID();\r
       Bool_t tpcEle = kFALSE; if(dEdx > 70.) tpcEle = kTRUE;\r
       Bool_t trkEle = kFALSE; if(pidProb == AliAODTrack::kElectron) trkEle = kTRUE;\r
       Bool_t emcEle = kFALSE;   \r
-\r
-\r
-\r
-\r
+      \r
+      \r
+      \r
+      \r
       ////////////////////////////////////////////////EMCAL//////////////////////\r
       if(mom.Pt() > 1.0 && in) {\r
-       fhTracks->Fill(track->Pt(),3);\r
-       Double_t res = 999.;\r
-       Double_t pOverE = -999.;\r
-       \r
-       //Track Matching parameters\r
-       double minRes=100.;\r
-       Double_t minR  = 99;\r
+        fhTracks->Fill(track->Pt(),3);\r
+        Double_t res = 999.;\r
+        Double_t pOverE = -999.;\r
+        \r
+        //Track Matching parameters\r
+        double minRes=100.;\r
+        Double_t minR  = 99;\r
         Double_t minPe =-1;\r
         Double_t minEp =-1;\r
         Double_t minMult = -1;\r
         Double_t minPt   = -1;\r
-\r
-       for(Int_t iclus = 0; iclus < ntot; iclus++) {\r
-         AliVCluster * clus = (AliVCluster*) (cl->At(iclus));\r
-         if(!clus) continue;\r
-\r
-         // new optimized from ben. 2010May\r
-         if (clus->GetNCells()       < 2    ) continue;\r
+        \r
+        for(Int_t iclus = 0; iclus < ntot; iclus++) {\r
+          AliVCluster * clus = (AliVCluster*) (cl->At(iclus));\r
+          if(!clus) continue;\r
+          \r
+          // new optimized from ben. 2010May\r
+          if (clus->GetNCells()       < 2    ) continue;\r
           if (clus->GetNCells()       > 35   ) continue;\r
           if (clus->E()               < 0 ) continue;\r
           if (clus->GetDispersion()   > 1.08    ) continue;\r
@@ -337,157 +336,157 @@ void  AliAnaBtag::MakeAnalysisFillAOD()
           if (clus->GetM02()          > 0.4  ) continue;\r
           if (clus->GetM20()          < 0 ) continue;\r
           if (clus->GetM02()          < 0.06 ) continue;\r
-         \r
-         \r
-         Float_t x[3];\r
-         clus->GetPosition(x);\r
-         TVector3 cluspos(x[0],x[1],x[2]);\r
-         Double_t deta = teta - cluspos.Eta();\r
-         Double_t dphi = tphi - cluspos.Phi();\r
-         if(dphi > TMath::Pi()) dphi -= 2*TMath::Pi();\r
-         if(dphi < -TMath::Pi()) dphi += 2*TMath::Pi();\r
-\r
-         res = sqrt(dphi*dphi + deta*deta);\r
-         if(res<minRes)  minRes=res;       \r
-\r
-         if(res < 0.0275) { // { //Optimized from Ben\r
-           iCluster = iclus;\r
-           Double_t energy = clus->E(); \r
-           if(energy > 0) pOverE = tmom/energy;\r
-           if (res< minR) {\r
+          \r
+          \r
+          Float_t x[3];\r
+          clus->GetPosition(x);\r
+          TVector3 cluspos(x[0],x[1],x[2]);\r
+          Double_t deta = teta - cluspos.Eta();\r
+          Double_t dphi = tphi - cluspos.Phi();\r
+          if(dphi > TMath::Pi()) dphi -= 2*TMath::Pi();\r
+          if(dphi < -TMath::Pi()) dphi += 2*TMath::Pi();\r
+          \r
+          res = sqrt(dphi*dphi + deta*deta);\r
+          if(res<minRes)  minRes=res;      \r
+          \r
+          if(res < 0.0275) { // { //Optimized from Ben\r
+            iCluster = iclus;\r
+            Double_t energy = clus->E(); \r
+            if(energy > 0) pOverE = tmom/energy;\r
+            if (res< minR) {\r
               minR  = res;\r
               minPe = pOverE;\r
               minEp = energy/tmom;\r
               minMult = clus->GetNCells() ;\r
               minPt = track->Pt();\r
             }\r
-         } else {\r
-             //unmatched\r
-         }//res cut\r
-\r
-       }//calo cluster loop\r
-       fhResidual->Fill(minRes);\r
-\r
-       if(minPe > 0.9 && minPe < 1.08) emcEle = kTRUE;//       if(minPe > fpOverEmin && minPe < fpOverEmax) emcEle = kTRUE;\r
+          } else {\r
+            //unmatched\r
+          }//res cut\r
+          \r
+        }//calo cluster loop\r
+        fhResidual->Fill(minRes);\r
+        \r
+        if(minPe > 0.9 && minPe < 1.08) emcEle = kTRUE;//      if(minPe > fpOverEmin && minPe < fpOverEmax) emcEle = kTRUE;\r
        \r
       }//pt, fiducial selection = EMCAL ////////////////////END EMCAL/////////////////////////\r
-\r
-\r
-\r
-\r
+      \r
+      \r
+      \r
+      \r
       ////////////////////////////////////////////////////Electrons/////////////////////     \r
       if(emcEle ||tpcEle || trkEle) { //Obsolete (kinda...)\r
-       fhTestalle->Fill(track->Pt());\r
-\r
-       //B-tagging\r
-       if(GetDebug() > 1) printf("Found Electron - do b-tagging\n");\r
-       Int_t pairs1=0,start=0,stop=0;\r
-       Int_t dvmbtag = GetDVMBtag(track,pairs1,start,stop); //add: get back #pairs, start stop in pair-Ntuple.\r
-       if(GetDebug() > 0) printf("AliAnaBtag::MakeAnalysisFillAOD -  Analyze, got back result from dvm: pair counts: pairs: %d, start %d, stop %d. \n",pairs1,start,stop);\r
-       fhNVTX->Fill(dvmbtag);\r
-\r
-       if(dvmbtag>0){\r
-         fhDVM1->Fill(track->Pt());\r
-         fhDVM1EtaPhi->Fill(track->Eta(),track->Phi());            \r
-       }\r
-       if(dvmbtag>1)\r
-         fhDVM2->Fill(track->Pt());\r
-       \r
-       //Create particle to save in AOD///////////// Purpose of this is the AODJets needs to check against this.\r
-       Double_t eMass = 0.511/1000; //mass in GeV\r
-       Double_t eleE = sqrt(track->P()*track->P() + eMass*eMass);\r
-       AliAODPWG4Particle tr = AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),eleE);\r
-       tr.SetLabel(track->GetLabel());\r
-       tr.SetCaloLabel(iCluster,-1); //sets the indices of the original caloclusters\r
-       tr.SetTrackLabel(track->GetID(),-1); //sets the indices of the original tracks tr.SetTrackLabel(track->GetID(),-1) instead of itrk;\r
-       tr.SetBtag(dvmbtag);\r
-       if(track->Charge() < 0) tr.SetPdg(11); //electron is 11\r
-       else  tr.SetPdg(-11); //positron is -11 \r
-\r
-       //Set detector flags\r
-       Int_t emcflag=0,tpcflag=0,trdflag=0;\r
-       if(emcEle){\r
-         fhEmcalElectrons->Fill(track->Pt());\r
-         emcflag=1;}\r
-       if(trkEle){\r
-         fhTRDElectrons->Fill(track->Pt());\r
-         trdflag=1;}\r
-       if(tpcEle){\r
-         fhTPCElectrons->Fill(track->Pt());\r
-         tpcflag=1;}\r
-\r
-       if(emcEle) {//PID determined by EMCAL\r
-         tr.SetDetector("EMCAL");\r
-       } else {\r
-         tr.SetDetector("CTS"); //PID determined by CTS\r
-       }\r
-\r
-\r
-       /////////////////////////MC stuff////////////////////////////////////////////////\r
-  Int_t pdg = 0;\r
-       if(IsDataMC()){\r
-         stack=GetMCStack();\r
-         if(!stack) {printf("AliAnaBtag::MakeAnalysisFillHistograms() - Crap, no stack: \n");\r
-    }\r
-    else{\r
-      //Is it really an electron?\r
-      TParticle *partX = stack->Particle(TMath::Abs(track->GetLabel()));\r
-      pdg = partX->GetPdgCode();\r
-      fhSpecies->Fill(TMath::Abs(pdg));\r
-      if(TMath::Abs(pdg)==11){ //Check MC electrons\r
-        if(emcEle)\r
-          fhEmcalMCE->Fill(track->Pt());\r
-        if(trkEle)\r
-          fhTRDMCE->Fill(track->Pt());\r
-        if(tpcEle)\r
-          fhTPCMCE->Fill(track->Pt());\r
-      }else{ //Fake histos!\r
-        if(emcEle)\r
-          fhEmcalMCEFake->Fill(track->Pt());\r
-        if(trkEle)\r
-          fhTRDMCEFake->Fill(track->Pt());\r
-        if(tpcEle)\r
-          fhTPCMCEFake->Fill(track->Pt());\r
-      }\r
-      if(TMath::Abs(pdg)==211){ //Check MC pions\r
-        if(emcEle)\r
-          fhEmcalMCP->Fill(track->Pt());\r
-        if(trkEle)\r
-          fhTRDMCP->Fill(track->Pt());\r
-        if(tpcEle)\r
-          fhTPCMCP->Fill(track->Pt());\r
-      }\r
-      if(TMath::Abs(pdg)==321){ //Check MC Kaons\r
-        if(emcEle)\r
-          fhEmcalMCK->Fill(track->Pt());\r
-        if(trkEle)\r
-          fhTRDMCK->Fill(track->Pt());\r
-        if(tpcEle)\r
-          fhTPCMCK->Fill(track->Pt());\r
-      }\r
-    }\r
-    \r
-         //Take care of where it came from (parent bit)\r
-         tr.SetTag(GetMCAnalysisUtils()->CheckOrigin(tr.GetLabel(),GetReader(),tr.GetInputFileIndex())); //Gets a tag bit which contains info about super grandfather particle. Use (tag&(1<<11)), 11 for direct b, and 9 for B->C\r
-\r
-         if(tr.GetTag()&(1<<9)||tr.GetTag()&(1<<11)) //MC particle from b-decay\r
-           fhNVTXMC->Fill(dvmbtag);\r
-\r
-         if(fWriteNtuple){\r
-           fNElec++;\r
-           fNElecEv++;\r
-           electrons->Fill(fNElec,fEventNumber,fNElecEv,pairs1,start,stop,tpcflag,trdflag,emcflag,pdg,tr.GetTag(),tr.GetBtag(),tr.Pt());\r
-\r
-\r
-         }\r
-         \r
-         if(GetDebug() > 0) \r
-           printf("AliAnaBtag::MakeAnalysisFillAOD() - Origin of candidate (parent bit) %d\n",tr.GetTag());\r
-       }//MonteCarlo MC done\r
-       \r
-       AddAODParticle(tr);             \r
+        fhTestalle->Fill(track->Pt());\r
+        \r
+        //B-tagging\r
+        if(GetDebug() > 1) printf("Found Electron - do b-tagging\n");\r
+        Int_t pairs1=0,start=0,stop=0;\r
+        Int_t dvmbtag = GetDVMBtag(track,pairs1,start,stop); //add: get back #pairs, start stop in pair-Ntuple.\r
+        if(GetDebug() > 0) printf("AliAnaBtag::MakeAnalysisFillAOD -  Analyze, got back result from dvm: pair counts: pairs: %d, start %d, stop %d. \n",pairs1,start,stop);\r
+        fhNVTX->Fill(dvmbtag);\r
+        \r
+        if(dvmbtag>0){\r
+          fhDVM1->Fill(track->Pt());\r
+          fhDVM1EtaPhi->Fill(track->Eta(),track->Phi());           \r
+        }\r
+        if(dvmbtag>1)\r
+          fhDVM2->Fill(track->Pt());\r
+        \r
+        //Create particle to save in AOD///////////// Purpose of this is the AODJets needs to check against this.\r
+        Double_t eMass = 0.511/1000; //mass in GeV\r
+        Double_t eleE = sqrt(track->P()*track->P() + eMass*eMass);\r
+        AliAODPWG4Particle tr = AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),eleE);\r
+        tr.SetLabel(track->GetLabel());\r
+        tr.SetCaloLabel(iCluster,-1); //sets the indices of the original caloclusters\r
+        tr.SetTrackLabel(track->GetID(),-1); //sets the indices of the original tracks tr.SetTrackLabel(track->GetID(),-1) instead of itrk;\r
+        tr.SetBtag(dvmbtag);\r
+        if(track->Charge() < 0) tr.SetPdg(11); //electron is 11\r
+        else  tr.SetPdg(-11); //positron is -11        \r
+        \r
+        //Set detector flags\r
+        Int_t emcflag=0,tpcflag=0,trdflag=0;\r
+        if(emcEle){\r
+          fhEmcalElectrons->Fill(track->Pt());\r
+          emcflag=1;}\r
+        if(trkEle){\r
+          fhTRDElectrons->Fill(track->Pt());\r
+          trdflag=1;}\r
+        if(tpcEle){\r
+          fhTPCElectrons->Fill(track->Pt());\r
+          tpcflag=1;}\r
+        \r
+        if(emcEle) {//PID determined by EMCAL\r
+          tr.SetDetector("EMCAL");\r
+        } else {\r
+          tr.SetDetector("CTS"); //PID determined by CTS\r
+        }\r
+        \r
+        \r
+        /////////////////////////MC stuff////////////////////////////////////////////////\r
+        Int_t pdg = 0;\r
+        if(IsDataMC()){\r
+          stack=GetMCStack();\r
+          if(!stack) {printf("AliAnaBtag::MakeAnalysisFillHistograms() - Crap, no stack: \n");\r
+          }\r
+          else{\r
+            //Is it really an electron?\r
+            TParticle *partX = stack->Particle(TMath::Abs(track->GetLabel()));\r
+            pdg = partX->GetPdgCode();\r
+            fhSpecies->Fill(TMath::Abs(pdg));\r
+            if(TMath::Abs(pdg)==11){ //Check MC electrons\r
+              if(emcEle)\r
+                fhEmcalMCE->Fill(track->Pt());\r
+              if(trkEle)\r
+                fhTRDMCE->Fill(track->Pt());\r
+              if(tpcEle)\r
+                fhTPCMCE->Fill(track->Pt());\r
+            }else{ //Fake histos!\r
+              if(emcEle)\r
+                fhEmcalMCEFake->Fill(track->Pt());\r
+              if(trkEle)\r
+                fhTRDMCEFake->Fill(track->Pt());\r
+              if(tpcEle)\r
+                fhTPCMCEFake->Fill(track->Pt());\r
+            }\r
+            if(TMath::Abs(pdg)==211){ //Check MC pions\r
+              if(emcEle)\r
+                fhEmcalMCP->Fill(track->Pt());\r
+              if(trkEle)\r
+                fhTRDMCP->Fill(track->Pt());\r
+              if(tpcEle)\r
+                fhTPCMCP->Fill(track->Pt());\r
+            }\r
+            if(TMath::Abs(pdg)==321){ //Check MC Kaons\r
+              if(emcEle)\r
+                fhEmcalMCK->Fill(track->Pt());\r
+              if(trkEle)\r
+                fhTRDMCK->Fill(track->Pt());\r
+              if(tpcEle)\r
+                fhTPCMCK->Fill(track->Pt());\r
+            }\r
+          }\r
+          \r
+          //Take care of where it came from (parent bit)\r
+          tr.SetTag(GetMCAnalysisUtils()->CheckOrigin(tr.GetLabel(),GetReader(),tr.GetInputFileIndex())); //Gets a tag bit which contains info about super grandfather particle. Use (tag&(1<<11)), 11 for direct b, and 9 for B->C\r
+          \r
+          if(tr.GetTag()&(1<<9)||tr.GetTag()&(1<<11)) //MC particle from b-decay\r
+            fhNVTXMC->Fill(dvmbtag);\r
+          \r
+          if(fWriteNtuple){\r
+            fNElec++;\r
+            fNElecEv++;\r
+            electrons->Fill(fNElec,fEventNumber,fNElecEv,pairs1,start,stop,tpcflag,trdflag,emcflag,pdg,tr.GetTag(),tr.GetBtag(),tr.Pt());\r
+            \r
+            \r
+          }\r
+          \r
+          if(GetDebug() > 0) \r
+            printf("AliAnaBtag::MakeAnalysisFillAOD() - Origin of candidate (parent bit) %d\n",tr.GetTag());\r
+        }//MonteCarlo MC done\r
+        \r
+        AddAODParticle(tr);            \r
       }//electron\r
-    \r
+      \r
     } //pid check\r
   }//track loop                         \r
   if(GetDebug() > 1) printf("AliAnaBtag::MakeAnalysisFillAOD()  End fill AODs \n");  \r