Analysis code for the MFT updated
authorauras <antonio.uras@cern.ch>
Sat, 2 Aug 2014 20:32:37 +0000 (22:32 +0200)
committerauras <antonio.uras@cern.ch>
Sat, 2 Aug 2014 20:32:37 +0000 (22:32 +0200)
MFT/AODtrain.C
MFT/AliAnalysisTaskMFTExample.cxx
MFT/AliMFT.h
MFT/AliMFTTrackerMU.cxx
MFT/RunAnalysisTaskMFTExample.C

index 2110816..e7fc7c8 100644 (file)
@@ -167,7 +167,7 @@ void AddAnalysisTasks(Int_t merge, const char *cdb_location){
    // Physics selection task
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
       mgr->RegisterExtraFile("event_stat.root");
-      AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(kFALSE);
+      AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(kTRUE);
 //      AliOADBPhysicsSelection * oadbDefaultPbPb = CreateOADBphysicsSelection();      
 //      physSelTask->GetPhysicsSelection()->SetCustomOADBObjects(oadbDefaultPbPb,0,0);
 //      if (!merge) mgr->AddStatisticsTask(AliVEvent::kAny);
index 5fab983..f6b1079 100755 (executable)
@@ -209,18 +209,18 @@ void AliAnalysisTaskMFTExample::UserExec(Option_t *) {
        mcMuon2 = (AliAODMCParticle*) stackMC->At(recMuon2->GetLabel());
        if (mcMuon2) {
          if (mcMuon2->GetMother() == mcMuon1->GetMother()) {
+           AliAODDimuon *dimuon = new AliAODDimuon;
+           dimuon->SetMuons(recMuon1,recMuon2);
            Double_t pca[3]={0};
            Double_t pcaQuality=0;
-           TClonesArray *muons = new TClonesArray("AliAODTrack",2);
-           muons -> Add(recMuon1);
-           muons -> Add(recMuon2);
            TLorentzVector kinem(0,0,0,0);
-           if (!AliMFTAnalysisTools::RefitAODDimuonWithCommonVertex(muons, pca, pcaQuality, kinem)) continue;
+           if (!AliMFTAnalysisTools::CalculatePCA(dimuon, pca, pcaQuality, kinem)) continue;
            fHistPtDimuonsJpsi    -> Fill(kinem.Pt());
            fHistMassDimuonsJpsi  -> Fill(kinem.M());
            fHistResidualXVtxJpsi -> Fill(1.e4*(pca[0] - fPrimaryVertex[0]));
            fHistResidualYVtxJpsi -> Fill(1.e4*(pca[1] - fPrimaryVertex[1]));
            fHistResidualZVtxJpsi -> Fill(1.e4*(pca[2] - fPrimaryVertex[2]));
+           delete dimuon;
          }
        }
       }
index ae61213..60d4654 100644 (file)
@@ -104,8 +104,8 @@ public:
 
   //--------- for underlying and pile-up events --------------------
 
-  void SetFileNameForUnderlyingEvent(TString fileName) { fFileNameForUnderyingEvent += fileName; }
-  void SetFileNameForPileUpEvents(TString fileName)    { fFileNameForPileUpEvents   += fileName; }
+  void SetFileNameForUnderlyingEvent(TString fileName) { if (fileName.EndsWith("MFT.RecPoints.root")) fFileNameForUnderyingEvent += fileName; }
+  void SetFileNameForPileUpEvents(TString fileName)    { if (fileName.EndsWith("MFT.RecPoints.root")) fFileNameForPileUpEvents   += fileName; }
 
   void SetUnderlyingEventID(Short_t eventID) { fUnderlyingEventID = eventID; }
   void SetPileUpEventID(Short_t i, Short_t eventID) { if (i>=0 && i<AliMFTConstants::fNMaxPileUpEvents) fPileUpEventsIDs[i] = eventID; }
index 0204c6e..b089176 100644 (file)
@@ -578,19 +578,20 @@ Bool_t AliMFTTrackerMU::IsCorrectMatch(AliMFTCluster *cluster, Int_t labelMC) {
 
 void AliMFTTrackerMU::GetVertexFromMC() {
 
-  AliRunLoader *fRunLoader = AliRunLoader::Open("galice.root");
-  if (!fRunLoader) {
+  AliRunLoader *runLoader = AliRunLoader::Open("galice.root");
+  if (!runLoader) {
     AliError("no run loader found in file galice.root");
     return;
   }
 
-  fRunLoader->CdGAFile();
-  fRunLoader->LoadgAlice();
-  fRunLoader->LoadHeader();
-  fRunLoader->GetEvent(gAlice->GetEvNumber());
+  runLoader->CdGAFile();
+  runLoader->LoadgAlice();
+  runLoader->LoadHeader();
+  runLoader->GetEvent(gAlice->GetEvNumber());
   
   TArrayF vtx(3);
-  fRunLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vtx);
+  runLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vtx);
+  AliInfo(Form("Primary vertex from MC found in (%f, %f, %f)\n",vtx[0], vtx[1], vtx[2]));
 
   fXExtrapVertex = gRandom->Gaus(vtx[0], AliMFTConstants::fPrimaryVertexResX);
   fYExtrapVertex = gRandom->Gaus(vtx[1], AliMFTConstants::fPrimaryVertexResY);
index 8bbf88a..be2abe6 100755 (executable)
@@ -1,7 +1,9 @@
+//====================================================================================================================================================
+
 Bool_t RunAnalysisTaskMFTExample(const Char_t *runType="local",       // "grid" and "local" types have been tested
                                 const Char_t *runMode="full") {
   
-  enum {kGenerated, kReconstructed};
+  //  enum {kGenerated, kReconstructed};
 
   LoadLibs();
 
@@ -12,14 +14,14 @@ Bool_t RunAnalysisTaskMFTExample(const Char_t *runType="local",       // "grid"
   AliAODInputHandler* inputHandler = new AliAODInputHandler();
   mgr->SetInputEventHandler(inputHandler);
   
-  if (!strcmp(runType,"grid")) mgr->SetGridHandler(CreateAlienHandler());
+  if (!strcmp(runType,"grid")) mgr->SetGridHandler(CreateAlienHandler(runMode));
   
   gROOT->LoadMacro("AliAnalysisTaskMFTExample.cxx++g");   
   AliAnalysisTaskMFTExample *task = new AliAnalysisTaskMFTExample("AliAnalysisTaskMFTExample");
 
   // in cm, taken from Fig. 7.4 of the ITS Upgrade TDR, in the hypothesis of ~80 tracks participating to the vtx
   task -> SetVtxResolutionITS(5.e-4, 5.e-4, 4.e-4);
-  task -> SetVertexMode(kGenerated);
+  task -> SetVertexMode(AliAnalysisTaskMFTExample::kGenerated);
 
   mgr->AddTask(task);
   
@@ -57,12 +59,12 @@ Bool_t RunAnalysisTaskMFTExample(const Char_t *runType="local",       // "grid"
 
 //====================================================================================================================================================
 
-AliAnalysisGrid* CreateAlienHandler() {
+AliAnalysisGrid* CreateAlienHandler(const Char_t *runMode) {
 
   // Set up the analysis plugin in case of a grid analysis
 
-  TString rootVersion = "v5-34-02-1";
-  TString alirootVersion = "v5-04-33-AN";
+  TString rootVersion = "v5-34-08-6";
+  TString alirootVersion = "vAN-20140727";
 
   AliAnalysisAlien *analysisPlugin = new AliAnalysisAlien();
   if (!analysisPlugin) { Printf("Error : analysisPlugin is null !!!"); return kFALSE; }
@@ -80,10 +82,10 @@ AliAnalysisGrid* CreateAlienHandler() {
   analysisPlugin->SetAdditionalRootLibs("PWGmuon");
   
   // Location of Data and Working dir
-  analysisPlugin->SetGridDataDir("");
-  analysisPlugin->SetDataPattern("");
+  analysisPlugin->SetGridDataDir("/alice/cern.ch/user/a/auras/MFT/simulations_2014/PbPb/jpsi_prompt/pix20um20um_plane400um/");
+  analysisPlugin->SetDataPattern("*/AliAOD.Muons.root");
   analysisPlugin->SetRunPrefix("");
-  analysisPlugin->SetGridWorkingDir("");
+  analysisPlugin->SetGridWorkingDir("MFT/analysis_2014/PbPb/jpsi_prompt/pix20um20um_plane400um/");
   
   // Declare alien output directory. Relative to working directory.
   analysisPlugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output