]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtAnalysis.cxx
Corrected compilation error with gcc 4.4
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtAnalysis.cxx
index 921e8ce13b946a79f8f15ef07fd38b3f579cf3e5..e0fcb8f7fbc71e0d725d880f250dfd92f4c8bc4e 100644 (file)
@@ -31,6 +31,7 @@
 \r
 #include "AlidNdPtEventCuts.h"\r
 #include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
 \r
 #include "AliPWG0Helper.h"\r
 #include "AlidNdPtHelper.h"\r
@@ -679,7 +680,8 @@ void AlidNdPtAnalysis::Init(){
 \r
   //\r
   Double_t kFact = 1.0;\r
-  if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx) kFact = 0.05; \r
+  if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
+     GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) kFact = 0.03; \r
 \r
   Int_t binsRecMCEventHist1[3]={100,100,100};\r
   Double_t minRecMCEventHist1[3]={-10.0*kFact,-10.0*kFact,-10.0*kFact}; \r
@@ -858,15 +860,25 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     return;\r
   }\r
 \r
+  // get physics trigger selection \r
+  AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+  if(!trigSel) {\r
+    AliDebug(AliLog::kError, "cannot get trigSel");\r
+    return;\r
+  }\r
+\r
   // trigger selection\r
   Bool_t isEventTriggered = kTRUE;\r
   if(evtCuts->IsTriggerRequired())  {\r
     if(IsUseMCInfo()) { \r
-      static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
-      isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+      //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+      //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+      trigSel->SetAnalyzeMC();\r
+      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
     }\r
     else {\r
-      isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+      //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
     }\r
   }\r
 \r
@@ -928,26 +940,27 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
     isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, GetAnalysisMode(), kFALSE);\r
   }\r
+\r
   if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
     vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
     isRecVertex = kTRUE;\r
   }\r
+\r
   Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
   //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
+  //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
 \r
-  // MB bias tracks\r
+  // vertex contributors\r
   Int_t multMBTracks = 0; \r
-  if(GetAnalysisMode() == AlidNdPtHelper::kTPC || GetAnalysisMode() == AlidNdPtHelper::kMCPion ||  \r
-     GetAnalysisMode() == AlidNdPtHelper::kMCKaon ||  GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
-     GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() ==AlidNdPtHelper::kMinus) {  \r
-\r
+  if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
+  {  \r
      multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
   } \r
-  else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kMCPion || \r
-          GetAnalysisMode() == AlidNdPtHelper::kMCKaon || GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
-         GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() == AlidNdPtHelper::kMinus) {\r
-\r
-           multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+  else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate) \r
+  {\r
+     //multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+     if(vtxESD->GetStatus())\r
+       multMBTracks = vtxESD->GetNContributors();\r
   } \r
   else {\r
     AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
@@ -967,6 +980,8 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     if(!allChargedTracks) return;\r
 \r
     Int_t entries = allChargedTracks->GetEntries();\r
+    //printf("entries %d \n",entries);\r
+\r
     labelsAll = new Int_t[entries];\r
     labelsAcc = new Int_t[entries];\r
     labelsRec = new Int_t[entries];\r
@@ -975,22 +990,54 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
       if(!track) continue;\r
       if(track->Charge()==0) continue;\r
-        \r
-       FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
-       labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
-       multAll++;\r
-\r
-       if(accCuts->AcceptTrack(track)) {\r
-         FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
-        labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
-        multAcc++;\r
-\r
-         if(esdTrackCuts->AcceptTrack(track)) {\r
-           FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
-          labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
-          multRec++;\r
+\r
+      /*\r
+      // cosmics analysis\r
+      if( GetParticleMode()==AlidNdPtHelper::kCosmics  && \r
+          AlidNdPtHelper::IsCosmicTrack(allChargedTracks, track, i, accCuts, esdTrackCuts)==kFALSE ) \r
+        continue;\r
+      */\r
+\r
+      // only postive charged \r
+      if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
+        continue;\r
+      \r
+      // only negative charged \r
+      if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
+        continue;\r
+\r
+      FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
+      labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
+      multAll++;\r
+\r
+       //if(accCuts->AcceptTrack(track)) {\r
+         //FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
+        //labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
+        //multAcc++;\r
+\r
+         if(esdTrackCuts->AcceptTrack(track)) \r
+        {\r
+          if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) {\r
+            // update track parameters\r
+             AliExternalTrackParam cParam;\r
+            track->RelateToVertexTPC(esdEvent->GetPrimaryVertexSPD(),esdEvent->GetMagneticField(),kVeryBig,&cParam);\r
+            track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
+\r
+             if(accCuts->AcceptTrack(track)) {\r
+               FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+              labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+              multRec++;\r
+            }  \r
+          }\r
+           else {\r
+             if(accCuts->AcceptTrack(track)) {\r
+               FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+              labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+              multRec++;\r
+            }\r
+          }\r
          }\r
-       }\r
+       //}\r
      } \r
      // fill track multiplicity histograms\r
      FillHistograms(allChargedTracks,labelsAll,multAll,labelsAcc,multAcc,labelsRec,multRec);\r
@@ -1066,11 +1113,11 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
         continue;\r
 \r
        // only postive charged \r
-       if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+       if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
         continue;\r
        \r
        // only negative charged \r
-       if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+       if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
        continue;\r
       \r
        // physical primary\r
@@ -1163,7 +1210,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
 \r
         // all genertated primaries including neutral\r
          if( iMc < stack->GetNprimary() ) {\r
-           fGenTrackMatrix->Fill(vTrackMatrix);\r
+           //fGenTrackMatrix->Fill(vTrackMatrix);\r
         }\r
 \r
          // only charged particles\r
@@ -1172,11 +1219,11 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          continue;\r
 \r
          // only postive charged \r
-         if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+         if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
         continue;\r
        \r
          // only negative charged \r
-         if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+         if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
         continue;\r
       \r
          // physical primary\r
@@ -1186,7 +1233,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          if(accCuts->AcceptTrack(particle)) \r
         {\r
 \r
-           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
+           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
 \r
           // fill control histograms\r
            if(fHistogramsOn) \r
@@ -1219,7 +1266,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
              if(iMc == labelsRec[iRec]) \r
             {\r
                fRecTrackMatrix->Fill(vTrackMatrix);\r
-               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
+               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
                if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
 \r
               // fill control histograms\r
@@ -1347,6 +1394,7 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
   //Float_t gphi = particle->Phi();\r
 \r
   Double_t dpt=0;\r
+  //printf("pt %f, gpt %f \n",pt,gpt);\r
   if(gpt) dpt = (pt-gpt)/gpt;\r
   Double_t deta = (eta-geta);\r
  \r
@@ -1915,6 +1963,7 @@ void AlidNdPtAnalysis::Analyse()
   aFolderObj->Add(h);\r
 \r
   // efficiency\r
+\r
   h = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
   aFolderObj->Add(h);\r
 \r
@@ -1940,6 +1989,7 @@ void AlidNdPtAnalysis::Analyse()
   h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
   aFolderObj->Add(h);\r
 \r
+\r
   h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
   aFolderObj->Add(h);\r
 \r
@@ -2174,7 +2224,7 @@ void AlidNdPtAnalysis::Analyse()
   c->cd();\r
 \r
   //\r
-  fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.9,0.89); \r
+  fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.8,0.79); \r
 \r
   h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
   h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r