]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Improvements in multiplicity determination
authorakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jul 2010 10:00:06 +0000 (10:00 +0000)
committerakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jul 2010 10:00:06 +0000 (10:00 +0000)
PWG2/FEMTOSCOPY/AliFemto/AliFemtoBasicEventCut.cxx
PWG2/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventMult.cxx
PWG2/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventMult.h
PWG2/FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChain.cxx

index f2a44a51ba7c0fc0fa8356533c3a91406cd2cb8c..c5f2df519024f3d9085ca7169195ba0627216ea6 100644 (file)
@@ -46,10 +46,11 @@ bool AliFemtoBasicEventCut::Pass(const AliFemtoEvent* event){
      (mult <= fEventMult[1]) && 
      (vertexZPos > fVertZPos[0]) &&
      (vertexZPos < fVertZPos[1]) &&
-     (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)) &&
+     ((!fAcceptBadVertex) || (event->ZDCParticipants() > 1.0)) &&
      ((!fAcceptOnlyPhysics) || (event->IsCollisionCandidate())));
   goodEvent ? fNEventsPassed++ : fNEventsFailed++ ;
 //   cout << "AliFemtoBasicEventCut:: return : " << goodEvent << endl;
+//     (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)) &&
   return (goodEvent);
 }
 //------------------------------
index 518a09bc5dec3ffca92585c51fbc7d0932fdf9d5..11c3e6e2e78cc8df663b6c37e417bb41c00e9e21 100644 (file)
 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult():
   fEvMult(0),
   fNormEvMult(0),
-  fSPDMult(0)
+  fSPDMult(0),
+  fMultSumPt(0)
 {
   // Default constructor
   fEvMult = new TH1D("EvMult", "Event Multiplicity", 5001, -0.5, 5000.5);
+  fMultSumPt = new TH2D("EvMultSumPt","Event Multiplicity vs Total pT",5001,-0.5,5000.5,1000,0.0,100.0);
 }
 
 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const char *aName):
   AliFemtoCutMonitor(),
   fEvMult(0),
   fNormEvMult(0),
-  fSPDMult(0)
+  fSPDMult(0),
+  fMultSumPt(0)
 {
   // Normal constructor
   char name[200];
@@ -36,13 +39,17 @@ AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const char *aName):
 
   snprintf(name, 200, "SPDEvMult%s", aName);
   fSPDMult = new TH1D(name, "SPD Tracklet Multiplicity", 5001, -0.5, 5000.5);
+
+  snprintf(name, 200, "EvMultTotPt%s", aName);
+  fMultSumPt = new TH2D(name,"Event Multiplicity vs Total pT",5001,-0.5,5000.5,1000,0.0,100.0);
 }
 
 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const AliFemtoCutMonitorEventMult &aCut):
   AliFemtoCutMonitor(),
   fEvMult(0),
   fNormEvMult(0),
-  fSPDMult(0)
+  fSPDMult(0),
+  fMultSumPt(0)
 {
   // copy constructor
   if (fEvMult) delete fEvMult;
@@ -53,6 +60,9 @@ AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const AliFemtoCutMonito
 
   if (fSPDMult) delete fSPDMult;
   fSPDMult = new TH1D(*aCut.fSPDMult);
+
+  if (fMultSumPt) delete fMultSumPt;
+  fMultSumPt = new TH2D(*aCut.fMultSumPt);
 }
 
 AliFemtoCutMonitorEventMult::~AliFemtoCutMonitorEventMult()
@@ -61,6 +71,7 @@ AliFemtoCutMonitorEventMult::~AliFemtoCutMonitorEventMult()
   delete fEvMult;
   delete fNormEvMult;
   delete fSPDMult;
+  delete fMultSumPt;
 }
 
 AliFemtoCutMonitorEventMult& AliFemtoCutMonitorEventMult::operator=(const AliFemtoCutMonitorEventMult& aCut)
@@ -78,6 +89,9 @@ AliFemtoCutMonitorEventMult& AliFemtoCutMonitorEventMult::operator=(const AliFem
   if (fSPDMult) delete fSPDMult;
   fSPDMult = new TH1D(*aCut.fSPDMult);
   
+  if (fMultSumPt) delete fMultSumPt;
+  fMultSumPt = new TH2D(*aCut.fMultSumPt);
+
   return *this;
 }
 
@@ -94,6 +108,7 @@ void AliFemtoCutMonitorEventMult::Fill(const AliFemtoEvent* aEvent)
   fEvMult->Fill(aEvent->NumberOfTracks());
   fNormEvMult->Fill(aEvent->UncorrectedNumberOfPrimaries());
   fSPDMult->Fill(aEvent->SPDMultiplicity());
+  fMultSumPt->Fill(aEvent->UncorrectedNumberOfPrimaries(), aEvent->ZDCEMEnergy());
 }
 
 void AliFemtoCutMonitorEventMult::Write()
@@ -102,6 +117,7 @@ void AliFemtoCutMonitorEventMult::Write()
   fEvMult->Write();
   fNormEvMult->Write();
   fSPDMult->Write();
+  fMultSumPt->Write();
 }
 
 TList *AliFemtoCutMonitorEventMult::GetOutputList()
@@ -110,5 +126,6 @@ TList *AliFemtoCutMonitorEventMult::GetOutputList()
   tOutputList->Add(fEvMult);
   tOutputList->Add(fNormEvMult);
   tOutputList->Add(fSPDMult);
+  tOutputList->Add(fMultSumPt);
   return tOutputList;
 }
index 205e95f45a25bdd7c2c57cfd05b1251cae95b78a..9345d979de6f25a7b398015ad00e88b3cf026c01 100644 (file)
@@ -47,6 +47,7 @@ class AliFemtoCutMonitorEventMult : public AliFemtoCutMonitor{
   TH1D *fEvMult;     // Multiplicity distribution
   TH1D *fNormEvMult; // Normalized event multiplicity distribution
   TH1D *fSPDMult;    // SPD tracklet multiplicity
+  TH2D *fMultSumPt;  // Event total pT vs. multiplicity
 };
 
 #endif
index fe4cedd8043d4ed05c69fedbc3c98f57e7fa9a34..888dfd6566ed4f3bf645479bb8a612b77c569a44 100644 (file)
@@ -281,8 +281,15 @@ AliFemtoEvent* AliFemtoEventReaderESDChain::ReturnHbtEvent()
   AliFmThreeVectorF vertex(fV1[0],fV1[1],fV1[2]);
   hbtEvent->SetPrimVertPos(vertex);
   hbtEvent->SetPrimVertCov(fVCov);
-       
-  hbtEvent->SetSPDMult(fEvent->GetMultiplicity()->GetNumberOfTracklets());
+  
+  Int_t spdetaonecount = 0;
+  
+  for (int iter=0; iter<fEvent->GetMultiplicity()->GetNumberOfTracklets(); iter++) 
+    if (fabs(fEvent->GetMultiplicity()->GetEta(iter)) < 1.0)
+      spdetaonecount++;
+
+  //  hbtEvent->SetSPDMult(fEvent->GetMultiplicity()->GetNumberOfTracklets());
+  hbtEvent->SetSPDMult(spdetaonecount);
 
   //starting to reading tracks
   int nofTracks=0;  //number of reconstructed tracks in event
@@ -320,18 +327,61 @@ AliFemtoEvent* AliFemtoEventReaderESDChain::ReturnHbtEvent()
 //   }
 
   int tNormMult = 0;
+  int tNormMultPos = 0;
+  int tNormMultNeg = 0;
+
+  Float_t tTotalPt = 0.0;
+
+  Float_t b[2];
+  Float_t bCov[3];
+
   for (int i=0;i<nofTracks;i++)
+
+
     {
       bool  tGoodMomentum=true; //flaga to chcek if we can read momentum of this track
 
       const AliESDtrack *esdtrack=fEvent->GetTrack(i);//getting next track
       //      const AliESDfriendTrack *tESDfriendTrack = esdtrack->GetFriendTrack();
-      if (esdtrack->GetStatus() & AliESDtrack::kTPCrefit)
-       if (esdtrack->GetTPCNcls() > 80) 
-         if (esdtrack->GetTPCchi2()/esdtrack->GetTPCNcls() < 6.0) 
-           if (esdtrack->GetConstrainedParam())
-             if (esdtrack->GetConstrainedParam()->Eta() < 0.9)
+
+      if ((esdtrack->GetStatus() & AliESDtrack::kTPCrefit) &&
+         (esdtrack->GetStatus() & AliESDtrack::kITSrefit)) {
+       if (esdtrack->GetTPCNcls() > 70) 
+         if (esdtrack->GetTPCchi2()/esdtrack->GetTPCNcls() < 4.0) {
+           if (TMath::Abs(esdtrack->Eta()) < 0.8) {
+             esdtrack->GetImpactParameters(b,bCov);
+             if ((b[0]<0.2) && (b[1] < 0.25)) {
+               tNormMult++;
+               tTotalPt += esdtrack->Pt();
+             }
+           }
+         }
+      }
+      else if (esdtrack->GetStatus() & AliESDtrack::kTPCrefit) {
+       if (esdtrack->GetTPCNcls() > 100) 
+         if (esdtrack->GetTPCchi2()/esdtrack->GetTPCNcls() < 4.0) {
+           if (TMath::Abs(esdtrack->Eta()) < 0.8) {
+             esdtrack->GetImpactParameters(b,bCov);
+             if ((b[0]<2.4) && (b[1] < 3.2)) {
                tNormMult++;
+               tTotalPt += esdtrack->Pt();
+             }
+           }
+         }
+      }
+      
+      hbtEvent->SetZDCEMEnergy(tTotalPt);
+//       if (esdtrack->GetStatus() & AliESDtrack::kTPCrefit)
+//     if (esdtrack->GetTPCNcls() > 80) 
+//       if (esdtrack->GetTPCchi2()/esdtrack->GetTPCNcls() < 6.0) 
+//         if (esdtrack->GetConstrainedParam())
+//           if (fabs(esdtrack->GetConstrainedParam()->Eta()) < 0.5)
+//             if (esdtrack->GetConstrainedParam()->Pt() < 1.0) {
+//               if (esdtrack->GetSign() > 0)
+//                 tNormMultPos++;
+//               else if (esdtrack->GetSign() < 0)
+//                 tNormMultNeg--;
+//             }
 
       // If reading ITS-only tracks, reject all with TPC
       if (fTrackType == kITSOnly) {
@@ -481,6 +531,7 @@ AliFemtoEvent* AliFemtoEventReaderESDChain::ReturnHbtEvent()
       trackCopy->SetTPCchi2(esdtrack->GetTPCchi2());       
       trackCopy->SetTPCncls(esdtrack->GetTPCNcls());       
       trackCopy->SetTPCnclsF(esdtrack->GetTPCNclsF());      
+      trackCopy->SetTPCsignal(esdtrack->GetTPCsignal());
       trackCopy->SetTPCsignalN((short)esdtrack->GetTPCsignalN()); //due to bug in aliesdtrack class   
       trackCopy->SetTPCsignalS(esdtrack->GetTPCsignalSigma()); 
 
@@ -519,6 +570,11 @@ AliFemtoEvent* AliFemtoEventReaderESDChain::ReturnHbtEvent()
 
   hbtEvent->SetNumberOfTracks(realnofTracks);//setting number of track which we read in event  
   hbtEvent->SetNormalizedMult(tNormMult);
+  if (tNormMultPos > tNormMultNeg)
+    hbtEvent->SetZDCParticipants(tNormMultPos);
+  else
+    hbtEvent->SetZDCParticipants(tNormMultNeg);
+
   fCurEvent++; 
   cout<<"end of reading nt "<<nofTracks<<" real number "<<realnofTracks<<endl;
   return hbtEvent;