]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONcombi.C
Remove compilation of grndmq
[u/mrichter/AliRoot.git] / MUON / MUONcombi.C
index 4e4a27d674312a13332392254f0284d1fa5a2a0a..24c7f89dac01e37e2b933ff7d0084bc3b75346cf 100644 (file)
@@ -1,5 +1,7 @@
-void MUONcombi (Int_t evNumber=0) 
+void MUONcombi (Int_t evNumber=0)
 {
+    const Float_t runWeight = 4.e8;
+
 // Dynamically link some shared libs
    if (gClassTable->GetID("AliRun") < 0) {
       gROOT->LoadMacro("loadlibs.C");
@@ -8,7 +10,7 @@ void MUONcombi (Int_t evNumber=0)
       delete gAlice;
       gAlice = 0;
    }
-//
+
 // Connect the Root Galice file containing Geometry, Kine and Hits
    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
    if (!file) file = new TFile("galice.root");
@@ -19,27 +21,29 @@ void MUONcombi (Int_t evNumber=0)
       if (gAlice) printf("AliRun object found on file\n");
       if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
    }
-   TClonesArray *PartArray = gAlice->Particles();
-   TParticle *Part;
-   
 
 // Import the Kine and Hits Trees for the event evNumber in the file
    Int_t nparticles = gAlice->GetEvent(evNumber);
    if (nparticles <= 0) return;
 //
 //
-   TH1F *dmass = new TH1F("dmass","Dimuon-Mass Distribution"
-                         ,25,0.,5.);
+   TH1F *dmass  = new TH1F("dmass","Dimuon-Mass Distribution"
+                         ,100,0.,5.);
+   
    TH1F *dmassc = new TH1F("dmassc","Dimuon-Mass Distribution"
-                          ,50,0.,10.);
+                          ,200,0.,10.);
    TH1F *dmassd = new TH1F("dmassd","Dimuon-Mass Distribution"
-                          ,50,0.,10.);
+                          ,200,0.,10.);
 
    TH1F *pt     = new TH1F("pt","pT-single"
                           ,50,0.,10.);
+   TH1F *hCont[30];
+   
 //
 //  Generator Loop
 //
+
+   Int_t i=0;
    
    AliGenCocktailEntry *Entry, *e1, *e2;
    AliGenCocktail*  Cocktail = (AliGenCocktail*) gAlice->Generator();
@@ -50,20 +54,21 @@ void MUONcombi (Int_t evNumber=0)
        ) {
        Entry->PrintInfo();
      }
-//                   Pairs of Generators
 //
 // Initialize Combinator 
+//
    AliDimuCombinator* Combinator = new AliDimuCombinator();
-   Combinator->SetEtaCut(-5, 5);
-   Combinator->SetPtMin(0.0);   
-
-   Int_t i=0;
+   Combinator->SetEtaCut(2.5, 4.);
+   Combinator->SetPtMin(1.0);   
+   
+   i=0;
+   
 //
 // Single Muon  Loop  
 //
    Combinator->ResetRange();
    
-
+   
 
    for(Muon=Combinator->FirstMuon();
        Muon; 
@@ -75,10 +80,10 @@ void MUONcombi (Int_t evNumber=0)
        Float_t ptm   = Muon->Pt();
        Float_t eta   = Muon->Eta();
        
-       printf("\n Particle %d Parent %d first child %d last child %d",
-             i,parent, chfirst, chlast);
-       printf("\n Particle pt, eta: %f , %f ", ptm, eta);
-       i++;       
+//       printf("\n Particle %d Parent %d first child %d last child %d",
+//           i,parent, chfirst, chlast);
+//       printf("\n Particle pt, eta: %f , %f ", ptm, eta);
+       i++;
    }
 //
 // Di-Muon Loop
@@ -88,33 +93,20 @@ void MUONcombi (Int_t evNumber=0)
    TParticle* Muon2;
 
    Combinator->ResetRange();
-/*
-   for (Combinator->FirstMuonPairSelected(Muon1,Muon2);
-       (Muon1 && Muon2);
-       Combinator->NextMuonPairSelected(Muon1,Muon2))
-   {
-       pt1 = Muon1->Pt();
-       pt2 = Muon2->Pt();       
-       Float_t mass = Combinator->Mass(Muon1, Muon2);
-       Float_t wgt  = Combinator->Weight(Muon1, Muon2);
-       pt->Fill(pt1, wgt);
-       pt->Fill(pt2, wgt);
-       Float_t smeared_mass = mass;
-       Combinator->SmearGauss(0.05*mass, smeared_mass);
-       if (Combinator->Correlated(Muon1, Muon2)) {
-          dmassc->Fill(mass, wgt);
-       } else {
-          dmass->Fill(mass, wgt);
-       }
-    }
-*/
+
 //
 //   Dimuon Loop controlled by Generator Loop
 //
+   Float_t  sig = 0;
+   Int_t  icont = 0;
+   char name[30];   
    for (Cocktail->FirstGeneratorPair(e1,e2);
        (e1&&e2);
        Cocktail->NextGeneratorPair(e1,e2)
        ){
+
+       sprintf(name, "%s-%s", e1->GetName(), e2->GetName());
+       hCont[icont] = new TH1F(name,"Dimuon-Mass Distribution",100,0.,5.);
        printf("\n ----------------------------------------------------");
        e1->PrintInfo();
        e2->PrintInfo();
@@ -129,23 +121,30 @@ void MUONcombi (Int_t evNumber=0)
           pt1 = Muon1->Pt();
           pt2 = Muon2->Pt();       
           Float_t mass = Combinator->Mass(Muon1, Muon2);
-          Float_t wgt  = Combinator->Weight(Muon1, Muon2);
+          Float_t wgt  = runWeight*Combinator->Weight(Muon1, Muon2)*
+              Combinator->DecayProbability(Muon1)*
+              Combinator->DecayProbability(Muon2);
           pt->Fill(pt1, wgt);
           pt->Fill(pt2, wgt);
           Float_t smeared_mass = mass;
-          Combinator->SmearGauss(0.05*mass, smeared_mass);
-          Float_t DecayWeight =
-              Combinator->DecayProbability(Muon2)*
-              Combinator->DecayProbability(Muon2);
-//        if (TMath::Min(pt1,pt2) > -0.5*TMath::Max(pt1,pt2)+2.) {
+          Combinator->SmearGauss(0.02*mass, smeared_mass);
+          
+          if (TMath::Min(pt1,pt2) > -0.5*TMath::Max(pt1,pt2)+2.) {
               if (Combinator->Correlated(Muon1, Muon2)) {
                   dmassc->Fill(smeared_mass, wgt);
+                  sig += wgt;
+              } else {
+// account for the fact that we sum like-sign and unlike-sign             
+                  wgt *= 0.5;
               }
-                  dmass->Fill(smeared_mass, wgt);
-                  dmassd->Fill(smeared_mass, wgt*DecayWeight);
-//        }
+              dmass->Fill(smeared_mass, wgt);
+              hCont[icont]->Fill(smeared_mass, wgt);
+          }
        } // Dimuon Loop
+       icont++;
    }// Generator Loop
+   printf("\n Signal %e \n \n", sig);
+   
 //
 //Create a canvas, set the view range, show histograms
 //
@@ -198,3 +197,4 @@ void MUONcombi (Int_t evNumber=0)
 
 
 
+