Bug fixed in MFTbaseLinkDef.h
authorauras <antonio.uras@cern.ch>
Tue, 25 Feb 2014 20:04:22 +0000 (21:04 +0100)
committerauras <antonio.uras@cern.ch>
Tue, 25 Feb 2014 20:04:22 +0000 (21:04 +0100)
 Please enter the commit message for your changes. Lines starting

MFT/Config.C
MFT/MFTbaseLinkDef.h
MFT/runMFT.sh
MFT/runReconstruction.C
MFT/runSimulation.C

index b6f526b..54602da 100644 (file)
@@ -51,7 +51,8 @@ enum PDCProc_t {kGenBox,
                kPythiaPerugia0BtoJpsi2mu, 
                kHijing, 
                kHijing2500,
-               kHijing2500Cocktail};
+               kHijing2500Cocktail,
+               kCocktailSignals};
 
 const Char_t* pprRunName[] = {"kGenBox",
                              "kGenMuonLMR",
@@ -64,7 +65,8 @@ const Char_t* pprRunName[] = {"kGenBox",
                              "kPythiaPerugia0BtoJpsi2mu", 
                              "kHijing", 
                              "kHijing2500", 
-                             "kHijing2500Cocktail"};
+                             "kHijing2500Cocktail",
+                             "kCocktailSignals"};
 
 enum Mag_t { kNoField, k5kG, kFieldMax };
 
@@ -73,8 +75,8 @@ const Char_t* pprField[] = { "kNoField", "k5kG", "kFieldMax" };
 void LoadLibs();
 
 // ----------------------- Generator, field, beam energy,... ------------------------------------------------------------
-static PDCProc_t     proc     = kGenBox;
-static PDCProc_t     signal   = kGenBox;    // only in case kHijing2500Cocktail is the proc
+static PDCProc_t     proc     = kGenParamJpsi;
+static PDCProc_t     signal   = kGenParamJpsi;    // only in case kHijing2500Cocktail is the proc
 static Mag_t         mag      = k5kG;
 static Float_t       energy   = 5500.; // energy in CMS
 static Float_t       bMin     = 0.;
@@ -161,6 +163,7 @@ void Config() {
   else if (proc == kGenCorrHF)                 gener = GenCorrHF();
   else if (proc == kGenPionKaon)               gener = GenParamPionKaon();
   else if (proc == kPythiaPerugia0BtoJpsi2mu)  gener = MbPythiaTunePerugia0BtoJpsi2mu();
+  else if (proc == kCocktailSignals)           gener = CocktailSignals();
 
   // Size of the interaction diamond
   Float_t sigmaz  = 5.4 / TMath::Sqrt(2.);     // [cm]
@@ -171,8 +174,9 @@ void Config() {
 
   printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
     
-//   gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
-//   gener->SetVertexSmear(kPerEvent);
+  gener->SetOrigin(0,0,0);
+  gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
+  gener->SetVertexSmear(kPerEvent);
   gener->Init();
 
   printf("\n \n Comment: %s \n \n", comment.Data());
@@ -215,7 +219,7 @@ void Config() {
   if (iDIPO)      AliDIPO   *DIPO   = new AliDIPOv3("DIPO", "Dipole version 3");
   if (iHALL)      AliHALL   *HALL   = new AliHALLv3("HALL", "Alice Hall");
   if (iSHIL)      AliSHIL   *SHIL   = new AliSHILv3("SHIL", "Shielding Version 3");
-  if (iITS)       AliITS    *ITS    = new AliITSv11("ITS","ITS v11");
+  if (iITS)       gROOT->ProcessLine(".x $ALICE_ROOT/ITS/UPGRADE/testITSU/CreateITSU.C");
   if (iTPC)       AliTPC    *TPC    = new AliTPCv2("TPC", "Default");
   if (iTOF)       AliTOF    *TOF    = new AliTOFv6T0("TOF", "normal TOF");
   if (iHMPID)     AliHMPID  *HMPID  = new AliHMPIDv3("HMPID", "normal HMPID");
@@ -263,12 +267,13 @@ void Config() {
 
 AliGenerator* GenBox() {
 
-  AliGenBox *gener = new AliGenBox(2);
-  gener->SetMomentumRange(10.0, 10.1);
+  AliGenBox *gener = new AliGenBox(10);
+  gener->SetMomentumRange(4, 50);
   gener->SetPhiRange(0., 360.);         
-  gener->SetThetaRange(171.0,178.0);
-  gener->SetPart(kMuonMinus);           // Muons
-  gener->SetOrigin(0., 0., 0.);         // vertex position
+  gener->SetThetaRange(170.0,178.0);
+  Bool_t isMuPlus = gRandom->Integer(2);
+  if (isMuPlus) gener->SetPart(kMuonPlus);           // Muons
+  else          gener->SetPart(kMuonMinus);          // Muons
   
   return gener;
   
@@ -284,8 +289,6 @@ AliGenerator* GenMuonLMR() {
   gener->SetYRange(-4.5, -2.0);
   gener->SetChildThetaRange(171.0,178.0);
   gener->SetChildMomentumRange(4.0, 999.);
-  gener->SetOrigin(0.0, 0.0, 0.0);             // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);              // vertex position smearing
   enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR}; 
   gener->GenerateSingleProcess(kOmega2Body, 10);
   gener->SetCutOnChild(1);
@@ -304,9 +307,7 @@ AliGenerator* GenParamJpsi() {
   gener->SetYRange(-4.0, -2.5);
   gener->SetPhiRange(0., 360.);
   gener->SetChildThetaRange(171.0,177.0);
-  gener->SetChildMomentumRange(5.0, 999.);
-  gener->SetOrigin(0.0, 0.0, 0.0);          // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);           // Sigma in (X,Y,Z) (cm) on IP position
+  gener->SetChildMomentumRange(4.0, 999.);
   gener->SetForceDecay(kDiMuon);
   gener->SetTrackingFlag(1);
   gener->SetCutOnChild(1);
@@ -323,8 +324,6 @@ AliGenerator* GenParamPionKaon() {
   gener->SetPtRange(0, 5.);
   gener->SetPhiRange(0., 360.);
   gener->SetYRange(-10., 0.);
-  gener->SetOrigin(0.0, 0.0, 0.0);  // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);   // vertex position smearing
   //  gener->SetCutOnChild(1);
 
   return gener;
@@ -342,7 +341,6 @@ AliGenerator* GenCorrHF() {
   gener->SetCutOnChild(1);          // 1/0 means cuts on children enable/disable
   gener->SetChildThetaRange(171.0,178.0);
   gener->SetChildMomentumRange(4.0, 999.);
-  gener->SetOrigin(0,0,0);          //vertex position    
   gener->SetForceDecay(kSemiMuonic);
   gener->SetTrackingFlag(1);
   gener->Init();
@@ -404,7 +402,6 @@ AliGenerator* MbPythiaTunePerugia0Jpsi2mu() {
   jpsi->SetPtRange(0.,999.);
   jpsi->SetYRange(-1.0, 1.0);
   jpsi->SetPhiRange(0.,360.);
-  jpsi->SetOrigin(0,0,0);
   jpsi->SetForceDecay(kDiMuon);
   return jpsi;
 
@@ -449,8 +446,6 @@ AliGenerator* HijingParam() {
   gener->SetMomentumRange(0,999);
   gener->SetPhiRange(0,360);
   gener->SetThetaRange(171, 179);
-  gener->SetOrigin(0,0,0);        // vertex position
-  gener->SetSigma(0,0,0);         // Sigma in (X,Y,Z) (cm) on IP position
   gGener = gener;
   
   return gener;
@@ -535,6 +530,48 @@ AliGenerator* Hijing2500Cocktail() {
 
 //====================================================================================================================================================
 
+AliGenerator* CocktailSignals() {
+  
+  comment = comment.Append("Cocktail of various signals");
+
+  AliGenCocktail *cocktail = new AliGenCocktail();
+
+  // 1) Dummy generation of positive pions, to keep memory of the production vertex
+  AliGenBox *dummyPionPos = new AliGenBox(20);
+  dummyPionPos->SetYRange(-0.5, 0.5);
+  dummyPionPos->SetPtRange(1., 10.);
+  dummyPionPos->SetPart(211);
+  cocktail->AddGenerator(dummyPionPos,"dummyPionPos",1);
+
+  // 2) Dummy generation of negative pions, to keep memory of the production vertex
+  AliGenBox *dummyPionNeg = new AliGenBox(20);
+  dummyPionNeg->SetYRange(-0.5, 0.5);
+  dummyPionNeg->SetPtRange(1., 10.);
+  dummyPionNeg->SetPart(-211);
+  cocktail->AddGenerator(dummyPionNeg,"dummyPionNeg",1);
+
+  // 3) Generator for the custom signal
+  AliGenerator* signalGen = 0x0;      
+  if      (signal == kPythia6)                   signalGen = MbPythia(); 
+  else if (signal == kPythiaPerugia0)            signalGen = MbPythiaTunePerugia0();
+  else if (signal == kHijing)                    signalGen = Hijing(); 
+  else if (signal == kHijing2500)                signalGen = Hijing2500();     
+  else if (signal == kGenBox)                    signalGen = GenBox();
+  else if (signal == kGenMuonLMR)                signalGen = GenMuonLMR();
+  else if (signal == kGenParamJpsi)              signalGen = GenParamJpsi();
+  else if (signal == kGenCorrHF)                 signalGen = GenCorrHF();
+  else if (signal == kGenPionKaon)               signalGen = GenParamPionKaon();
+  else if (signal == kPythiaPerugia0BtoJpsi2mu)  signalGen = MbPythiaTunePerugia0BtoJpsi2mu();
+  cocktail->AddGenerator(signalGen, "signal", 1);
+
+  cocktail->SetTrackingFlag(1);
+
+  return cocktail;
+
+}
+
+//====================================================================================================================================================
+
 AliGenerator* QEDGeneratorPbPb() {
   
   AliGenEpEmv1 *generQED = new AliGenEpEmv1();
@@ -543,7 +580,7 @@ AliGenerator* QEDGeneratorPbPb() {
   generQED->SetTarget ("A", 208, 82);
   generQED->SetYRange(-8.5, 0.);
   generQED->SetPtRange(0.4e-3, 1.0); // Set pt limits (GeV) for e+-
-  generQED->SetDebug(0);            // Set debug level (0 = silent)
+  generQED->SetDebug(0);             // Set debug level (0 = silent)
 
 }
 
@@ -570,7 +607,10 @@ void LoadLibs() {
   } 
   
   gSystem->Load("libgeant321");
-  
+
+  gSystem->Load("libITSUpgradeBase.so");
+  gSystem->Load("libITSUpgradeSim.so");
+   
 #endif
 
 }
index 63f7f78..c2f57db 100644 (file)
@@ -11,6 +11,6 @@
 #pragma link C++ class  AliMFTSegmentation+;
 #pragma link C++ class  AliMFTDigit+;
 #pragma link C++ class  AliMFTCluster+;
-#pragma link C++ class  AliMFTSupport;
+#pragma link C++ class  AliMFTSupport+;
 
 #endif
index 424046d..30d1784 100644 (file)
@@ -4,9 +4,9 @@ date
 NEVENTS=10   # Number of events to be simulated
 SIMCONFIG="Config.C"   # default simulation configuration file
 CURDIR=`pwd`
-echo $CURDIR
+echo 'current directory:' $CURDIR
 OUTDIR=${CURDIR}/test
-echo $OUTDIR
+echo 'working directory:' $OUTDIR
 mkdir $OUTDIR
 RUN=169099  # run number for OCDB access
 SEED=12345  # random number generator seed should be used
@@ -14,13 +14,16 @@ SIMDIR="generated" # sub-directory where to move simulated files prior to reco
 # Copy *ALL* the macros we need in the output directory, not to mess
 # with our source dir in any way.
 cp $ALICE_ROOT/MFT/.rootrc \
-   $ALICE_ROOT/Config.C \
+   $ALICE_ROOT/MFT/Config.C \
    $ALICE_ROOT/MFT/rootlogon.C \
-   $ALICE_ROOT/runReconstruction.C \
-   $ALICE_ROOT/runSimulation.C \
+   $ALICE_ROOT/MFT/runReconstruction.C \
+   $ALICE_ROOT/MFT/runSimulation.C \
    $ALICE_ROOT/MFT/AliMFTClusterQA.C \
    $ALICE_ROOT/MFT/AliMFTGeometry.root \
-   $ALICE_ROOT/AODtrain.C \
+   $ALICE_ROOT/MFT/AODtrain.C \
+   $ALICE_ROOT/MFT/RunAnalysisTaskMFTExample.C \
+   $ALICE_ROOT/MFT/AliAnalysisTaskMFTExample.h \
+   $ALICE_ROOT/MFT/AliAnalysisTaskMFTExample.cxx \
    $OUTDIR 
 cd $OUTDIR
 
@@ -60,6 +63,16 @@ echo "Creating AODs  ..."
 echo aliroot -l -b -q AODtrain.C
 aliroot -l -b -q AODtrain.C >$OUTDIR/AODLog.out 2>$OUTDIR/AODLog.err
 
+###############################################################################
+# 
+# Performing analysis
+#
+###############################################################################
+  
+echo "Performing analysis  ..."
+echo aliroot -l -b -q RunAnalysisTaskMFTExample.C
+aliroot -l -b -q RunAnalysisTaskMFTExample.C >$OUTDIR/analysisLog.out 2>$OUTDIR/analysisLog.err
+
 echo "Finished"  
 echo "... see results in $OUTDIR"
 ls -latr
index 1645733..e55e4a1 100644 (file)
@@ -36,11 +36,7 @@ void runReconstruction(Int_t seed, const Char_t *recOptions) {
   reco->SetSpecificStorage("MFT/Align/Data",       "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
   reco->SetSpecificStorage("MFT/Calib/RecoParam",  "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
 
-  reco->SetRunReconstruction("MUON MFT");
-  reco->SetRunLocalReconstruction("MUON MFT");
   reco->SetOption("MUON MFT",recOptions);
-  //  reco->SetRunQA("DetectorList:ActionList");
-  //  reco->SetQAWriteExpert(AliQAv1::kMUON);
 
   reco->SetWriteESDfriend(kFALSE);
   reco->SetStopOnError(kFALSE);
index f77a4c7..f0e8b87 100644 (file)
@@ -10,13 +10,18 @@ void runSimulation(Int_t seed,
   simulator->SetTriggerConfig("MUON");
   simulator->SetMakeDigits("MUON MFT");
   simulator->SetMakeSDigits("MUON MFT");
-  simulator->SetRunQA("DetectorList:ActionList");
+  simulator->SetRunQA(":");
   simulator->SetRunHLT("");
 
-  // MUON Tracker -> local:///$OCDB should reflect the content of alien://folder=/alice
-  simulator->SetDefaultStorage("alien://folder=/alice/simulation/2008/v4-15-Release/Ideal");
-  simulator->SetSpecificStorage("MUON/Align/Data", "alien://folder=/alice/simulation/2008/v4-15-Release/Ideal");
-  simulator->SetSpecificStorage("MFT/Align/Data",  "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
+  gRandom->SetSeed(seed);
+
+  // MUON Tracker
+  simulator->SetSpecificStorage("MUON/Align/Data",  "local:///gridgroup/ALICE/auras/upgrade/simulations/OCDB/simulation/2008/v4-15-Release/Ideal");
+  simulator->SetSpecificStorage("MUON/Calib/RecoParam", "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
+  simulator->SetSpecificStorage("MFT/Align/Data",       "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
+  simulator->SetSpecificStorage("MFT/Calib/RecoParam",  "alien://folder=/alice/cern.ch/user/a/auras/OCDB/");
+
+  simulator->UseMagFieldFromGRP();
 
   // The rest
   TStopwatch timer;